2015-12-03 129 views
0

是否有任何方法可以從基類中覆蓋派生類中的自動屬性功能?例如:爲自動屬性定義自定義功能C#

class Foo 
{ 
    public override void OverrideSetSomeHow() 
    { 
    //do something 
    } 
    public override void OverrideGetSomeHow() 
    { 
     //do something 
    } 
} 

class Bar : Foo 
{ 
    public string Name { get; set; } 
} 

class SomeOtherClass: Foo 
{ 
    public Guid Id { get; set; } 
} 

所需的效果是,get和set調用基類中的重寫方法(或者需要發生)。我想強制執行所有派生類中的獲取和設置功能,而不希望其他人使用代碼來知道它在做什麼,它看起來比把所有相同的邏輯放在一個更乾淨一堆不同的地方。

+0

你試圖做的事情不可能。 – MarcinJuraszek

+0

我想盡可能多,但想法ID給它一個鏡頭。謝謝 – derek

+0

我對你要完成的任務感到茫然。你能否提供一個這樣的例子,也許我們可以幫助你以不同的方式做到這一點? – nlaq

回答

1

不知道我得到了你需要的東西,但如果你試圖實現的是攔截呼叫,所以你可以做額外的工作,我建議你看看Castle DynamicProxy,這正好說明了這一點。

+0

令人驚歎!謝謝。我能夠使用IInterceptor獲取正在設置的值,獲取調用目標(派生類)並將該值添加到字典中(在基類中),將該值設置爲null(現在它在字典),同時保持默認的獲取/設置在自動屬性上。 – derek