2010-08-03 106 views
3

我使用Castle DynamicProxy在运行时创建给定类型的代理 - 包括一对mixin。是否可以通过DynamicProxy将属性添加到类型?

我试图找出是否有可能也是任意属性代理添加,例如:

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

,并在运行时,我创建了一个新的类型,应该是这样的:

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

从理论上来说,看起来应该是有可能 - 也许我只是没有看到如何做到这一点与城堡......任何想法?谢谢!

+0

你可以使用一个mixin或让代理实现一个initerface来公开这个属性 – 2010-08-03 03:23:07

+0

,这几乎是我已经完成的,但不是我需要做的 - 当代理是新的属性名称时需要确定创建...在运行时 - 想到这样,编译时,说我有Prop1,Prop2,Pro3等...然后我需要添加Prop1Metadata,Prop2Metadata,Prop3Metadata等...有道理? (thx为快速回复) – Bobby 2010-08-03 03:29:56

+1

是的,它确实有道理。不,现在还不可能,至少不是现成的。你可以扩展DP来增加它,但目前它不会很容易,因为DP非常专注于做它所做的 - 代理,这排除了像这样的场景。 – 2010-08-03 03:58:54

回答

0

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

相关问题