3
這是我第一次在這裏發表問題,所以先感謝任何人都會幫助我(也許還有其他人)。有合法施法的機會嗎?
今天我一直不解帶協方差和逆變在C#4,但我實在看不出任何可能性做什麼,我會的。 注:所有這些都是不來解決特定的問題,但我想知道是否有任何合法的方式(全新CO /禁忌方差在C#4),以解決這個問題。 所以,不要弄瘋了...
下面的代碼示例:
public interface IBase<in T>
{
T GetValue();
...
}
public class Readable<T> : IBase<T>
{
public T GetValue() {/* */}
...
}
public class Writeable<T> : IBase<T>
{
public T GetValue() {/* */}
public void SetValue(T value) {/* */}
...
}
public class Program
{
private List<IBase<object>> _collection = new List<IBase<object>>();
public static void Main()
{
var p = new Program();
p._collection.Add(new Readable<bool>()); //not allowed
}
}
收集應該能夠舉辦任何IBASE的衍生物,是任何T. 當然,我的這些可能會使用非通用集合或列表,遊戲結束。 另一個想法是有一個更常見的接口IBaseCore,然後IBase繼承。 我的問題是:如果沒有這些技巧,我是否可以獲得IBase的集合並添加任何IBase的項目?
感謝大家。
驚人的喬恩...哇!我會睡不着今晚! – 2011-02-24 14:32:33
是的,IBase非泛型是一個想法。我不知道嵌套的類型......無論如何非常感謝! – 2011-02-24 14:34:39