【问题标题】:Dynamic Proxy Object Creation动态代理对象创建
【发布时间】:2012-06-10 01:42:36
【问题描述】:

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

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

伪代码:

object proxy = GetDynamicProxy(typeof(ProxyType));

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

谢谢, 亚历克斯。

【问题讨论】:

  • 你能提供一些代码或伪代码来说明你想要做什么吗?
  • 你的意思是ICloneable/MemberwiseClone?
  • 添加了一些伪代码来尝试让我的愿望更清晰。
  • 伪与Activator.CreateInstance有什么不同?
  • 那么创建的对象不会是和ProxyType相同的Type,而是POCO对象,只是反映属性,去掉所有的事件和接口。

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


【解决方案1】:

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

的链接

【讨论】:

    【解决方案2】:

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

    yourContext.CreateObject<YourType>()
    

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

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

    【讨论】:

      猜你喜欢
      • 2010-10-03
      • 1970-01-01
      • 2012-09-07
      • 1970-01-01
      • 1970-01-01
      • 2013-03-21
      • 2018-06-27
      • 2020-10-11
      • 1970-01-01
      相关资源
      最近更新 更多