我想調用聲明類之外的部分方法。這是不允許的,因爲部分方法是隱式私有的。你不能設置一個委託指向的部分,所以我建議如下:C#:部分方法和Action,未實現的主體
public partial class MyClass {
AnotherClass _anotherClass;
public MyClass () {
_anotherClass = new AnotherClass();
_anotherClass.Method = new Action(() => {
this.Method();
});
}
partial void Method();
//sometimes this method will be implemented
//partial void Method() {
//do something
//}
}
public class AnotherClass {
public Action Method { get; set;}
public void SomeOtherMethod(){
this.Method();
}
}
的類是緊密耦合的,他們是在一個父子關係。我希望父母有一個可以重寫的方法,以瞭解有關孩子的財產變化。我可以將事件處理程序附加到每個孩子,但是孩子已經知道其父母,因此讓孩子直接通知父母似乎是要走的路。除非父母不在乎這就是爲什麼我希望能夠實施一個部分,如果我照顧。這個問題基本上是關於編程vs性能的簡化。我知道我可以僅將事件處理程序附加到我關心的情況,但通過上面的實現,我可以生成所有部分方法,並且只在我關心時才實現部分方法。
我的問題涉及部分方法Method()
未實現的時間。當Action方法被調用時,編譯器會將其優化掉,因爲它的主體是空的?如果我收到一堆這樣的Action請求,我會遭受性能損失嗎?有沒有更好的方式來獲得相同的功能?
你不會得到顯着的性能影響,稱空行爲是一個相當便宜的操作。我懷疑編譯器會把這個void Action取消掉。 – 2010-12-17 00:33:06
我不明白爲什麼佩佩說阿布圖表演。如果它很重要...... MEASURE IT;) – 2011-03-22 09:44:58