动态代理对象创建

时间:2012-06-06 02:33:39

标签: c# entity-framework dynamic .net-4.0 proxy

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

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

伪代码:

object proxy = GetDynamicProxy(typeof(ProxyType));

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

谢谢, 亚历克斯。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

yourContext.CreateObject<YourType>()

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

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