0
我有一個通用類,我想創建一個通用列表,其中底層類實現相同的接口。但是,並不是所有的實現給定的接口。在C#中創建通用對象的通用列表
一個例子比說明問題要容易。
internal interface ISomething
{
}
internal class ThisThing : ISomething
{
}
internal class ThatThing : ISomething
{
}
internal class SomethingElse
{
}
internal class GenericThing<T>
{
}
internal class DoThings
{
void Main()
{
var thing1 = new GenericThing<ThisThing>();
var thing2 = new GenericThing<ThatThing>();
var thing3 = new GenericThing<SomethingElse>();
**var thingList = new List<GenericThing<ISomething>>() {thing1, thing2};**
}
}
我無法創建thingList。有沒有辦法將實現相同接口的兩個東西轉換爲泛型集合,同時仍然保持GenericThing類不受接口約束。
那麼,你的問題到底是什麼? –
你想添加'thing3'到'List'嗎? – barrick
'GenericThing'對於泛型參數不是協變的,所以這是行不通的。 – Servy