【问题标题】:Is it possible to add a property to a type, via a DynamicProxy?是否可以通过 DynamicProxy 向类型添加属性?
【发布时间】:2010-08-03 03:03:51
【问题描述】:

我正在使用 Castle DynamicProxy 在运行时创建给定类型的代理 - 包括几个 mixin。

我正在尝试确定是否可以向代理添加任意属性,例如:

class BaseType
{
  string Foo { get; set; }
}

在运行时,我创建了一个新类型,如下所示:

class BaseTypeProxy3848484etc
{
  string Foo { get; set; }
  OtherType Bar { get; set; }
}

理论上,这似乎应该是可能的-也许我只是不知道如何使用Castle来做到这一点...有什么想法吗?谢谢!

【问题讨论】:

  • 您可以使用 mixin 或让代理实现公开此属性的 initerface
  • 这几乎是我已经做的,但不是我需要做的——新的属性名称需要在创建代理时确定......在运行时——这样想,编译时,说我有Prop1,Prop2,Pro3等...然后我需要添加Prop1Metadata,Prop2Metadata,Prop3Metadata等...有意义吗? (感谢快速回复)
  • 是的,它确实有意义。不,在这一点上是不可能的,至少不是开箱即用。您可以扩展 DP 来添加它,但目前这并不容易,因为 DP 非常专注于做它所做的事情 - 代理,这不包括像这样的场景。
  • 好的,明白了。感谢您的澄清。除了 DynamicProxy,还有其他方法吗?如果不是,我想我需要考虑一种不同的方法..
  • 我不知道。不过,用 DP 做起来并不是非常困难

标签: c# castle-dynamicproxy dynamic-proxy


【解决方案1】:

扩展 DynamicObject 您可以创建实例的代理并将行为添加到要添加的属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-08
    • 2012-07-28
    • 2014-07-13
    • 2017-03-16
    • 2022-11-10
    • 2020-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多