是否可以通过DynamicProxy将属性添加到类型?
问题描述:
我使用Castle DynamicProxy在运行时创建给定类型的代理 - 包括一对mixin。是否可以通过DynamicProxy将属性添加到类型?
我试图找出是否有可能也是任意属性代理添加,例如:
class BaseType
{
string Foo { get; set; }
}
,并在运行时,我创建了一个新的类型,应该是这样的:
class BaseTypeProxy3848484etc
{
string Foo { get; set; }
OtherType Bar { get; set; }
}
从理论上来说,看起来应该是有可能 - 也许我只是没有看到如何做到这一点与城堡......任何想法?谢谢!
答
扩展DynamicObject,您可以为您的实例创建一个代理并将行为添加到要添加的属性。
你可以使用一个mixin或让代理实现一个initerface来公开这个属性 – 2010-08-03 03:23:07
,这几乎是我已经完成的,但不是我需要做的 - 当代理是新的属性名称时需要确定创建...在运行时 - 想到这样,编译时,说我有Prop1,Prop2,Pro3等...然后我需要添加Prop1Metadata,Prop2Metadata,Prop3Metadata等...有道理? (thx为快速回复) – Bobby 2010-08-03 03:29:56
是的,它确实有道理。不,现在还不可能,至少不是现成的。你可以扩展DP来增加它,但目前它不会很容易,因为DP非常专注于做它所做的 - 代理,这排除了像这样的场景。 – 2010-08-03 03:58:54