我有一個場景,我希望能夠通過一個方法參數傳遞一個類,並從傳遞的類的實例中獲取類特定的信息。C# - 通過參數傳遞繼承類
例子:
public abstract class Foo {
public int x;
}
然後
public class Bar : Foo {
public int y;
public Bar(int y) {
this.y = y;
}
}
我需要什麼,能夠做的就是這樣的事情
public void foobar(Foo f) {
int y = f.y;
}
這將是這樣調用:
foobar(new Bar(5));
這將得到一個特定於類「Bar」的值,該值是Foo類的「Inherits」。
我需要能夠做到這一點沒有typcasting,以便該類將被動態處理。
我知道,我只能說
((Bar)f).y
然而,問題是我將不得不通過傳遞多個類和靜態類型轉換將擊敗目的。
爲什麼沒有定義那麼在Foo中呢?特別是如果你想要在任何繼承的類中獲得y值。 – juharr 2014-10-29 12:28:58
但它擊敗了面向對象的編程。你不能準備界面,f.e用'y'屬性嗎? – 2014-10-29 12:29:07
查看MSDN的「標識符模式」的鏈接:http://msdn.microsoft.com/de-de/library/dd547125.aspx。它在F#中,而不是C#,但我想這就是你想要實現的。如果您希望可以發佈一些與F#代碼完全相同的C#代碼。 – DMAN 2014-10-29 12:36:15