动态代理对象创建

本文关键字:创建 对象 代理 动态 | 更新日期: 2023-09-27 18:36:28

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

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

伪代码:

object proxy = GetDynamicProxy(typeof(ProxyType));

所以基本上我正在寻找一种方法来获取表示ProxyType的对象以及像GetDynamicProxy这样的方法来获取它。

谢谢亚历克斯。

动态代理对象创建

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

如果你的对象上下文将 ProxyCreationEnabled 设置为 true,则

yourContext.CreateObject<YourType>()

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

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