【发布时间】: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