2011-08-07 82 views
2

我正在尋找一種Tuple屬性可以接收幾個元組的方式,如Tuple<int>,Tuple<string>。下面的代碼是,我試圖做一個例子:是否可以推廣Tuple屬性?

public class A 
{ 
    public virtual Tuple Condition 
    { 
     get; 
     set; 
    } 
} 

public class B: A 
{ 
    public override Tuple<int, string> Condition 
    { 
     get; 
     set; 
    } 
} 

我想使用條件屬性從A類,並用它在其他類,如B和ASIGN它的一個具體的元組。

B b = new B(); 
B.Condition = Tuple.Create(2, "Bella"); 

A a = b; 
a.Condition // Here must show B.Condition 
+2

將元組暴露爲API的一部分很少是一個好主意。你真的想要建模什麼? –

回答

3

兩個問題的方法:

  1. Tuple<T1, T2>Tuple是不同的類,方法/屬性重寫不支持多態的返回類型。

  2. 即使他們這樣做,Tuple<T1, T2>不會繼承自Tuple,所以它不會工作。

您將需要申報virtual屬性是object,然後在需要的時候只投來回。或者,您可能想考慮一下您的財產真正代表什麼;或許一個定製類將比Tuple更加靈活。

1

不,你不能因爲簽名不匹配。

你可以考慮最近的模式如下:

public class A 
{ 
    public object Condition 
    { 
     get; 
     set; 
    } 
} 

public class B: A 
{ 
    public void SetCondition(Tuple<int, string> condition) 
    { 
     base.Condition = condition; 
    } 
} 

但是,你正在尋找具有有限的意義。你可以用哪種方式使用「通用」元組?此時最好考慮一個對象。

相關問題