2010-08-03 130 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,您可以爲您的實例創建一個代理並將行爲添加到要添加的屬性。

相關問題