說我有,其存儲泛型參數輸入值的通用接口:多個類
public interface IFoo<TValue>
{
TValue SomeValue { get; set; }
}
然後,我有兩個班,StringFoo
和DoubleFoo
其SomeValues
是string
S和double
小號分別爲:
public class StringFoo : IFoo<string>
{
string SomeValue { get; set; }
}
public class DoubleFoo : IFoo<double>
{
double SomeValue { get; set; }
}
我現在決定,我想,可以同時包含StringFoo
S和數組個S:
var foos = IFoo<object>[] {
new StringFoo { SomeValue = "a value" },
new DoubleFoo { SomeValue = 123456789 }
}
我倒是覺得,因爲這兩個string
和double
是object
子類,他們都希望能在這個數組中允許的。但是,我認爲是錯誤的。
所以,我嘗試使用協方差:
public interface IFoo<out TValue>
,但由於接口同時包含getter和setter方法,我不能這樣做。
那麼,可以在一個數組中實現通用接口的兩個類?
的可能的複製[C# - 在一個列表中的多個泛型類型(https://stackoverflow.com/questions/353126/c-sharp-multiple-generic-types-in-one-list) – Fruchtzwerg
列表和T []是完全不同的結構,顯然可以從一個轉換到另一個,但可能會根據未來的語言設計顯示非常不同的行爲決策及其基礎運行時實現。這就是爲什麼這個問題完全不同。事實上,從語言理論的角度來看,今天的答案相似或相同並不重要。 –