1

最近我一直在寻找一种方法来创建以编程方式反映其他对象属性的代理对象。但是我一直无法找到有关如何执行此类操作的任何信息,我相信这应该是可能的,因为我在 EntityFramework 中注意到执行 LINQ 操作会返回具有相同属性的代理对象,这些属性可以直接转换为它们所代表的类型.

基本上我正在寻找同样的功能,如果有人能解释它是如何工作的,我会很高兴的。

伪代码:

object proxy = GetDynamicProxy(typeof(ProxyType));

所以基本上我正在寻找一种方法来获取一个代表的对象ProxyType和一种方法GetDynamicProxy来获取它。

谢谢,亚历克斯。

4

2 回答 2

2

在 EF 中,代理是通过从实体类型动态派生并动态实现代码来生成的。您需要查看动态编译的程序集、类型和 lambda。System.Reflection.Emit 是你的朋友 (???)。这是一个应该帮助http://msdn.microsoft.com/en-us/library/3y322t50的链接

于 2012-06-06T04:28:43.203 回答
0

如果您的 objectcontext 将 ProxyCreationEnabled 设置为 true,那么

yourContext.CreateObject<YourType>()

将创建您类型的动态代理版本,您可以填充数据。

http://msdn.microsoft.com/en-us/library/dd456853.aspx

于 2012-06-06T05:11:22.663 回答