我可以创建List <Class <T >>吗?

Tok*_*okk 4 .net c# generics

我上课了

public class Setting<T>
{
    public string name { get; set; }

    public T value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

现在我想创建一个IList<Setting<T>>但是有不同类型Setting<T>的T,我想要eG

List<Setting<T>> settingsList;
settingsList.Add(new Setting<int>());
settingsList.Add(new Setting<string>()); 
Run Code Online (Sandbox Code Playgroud)

我试过IList<Setting<T>>但这似乎不可能,因为编译器找不到Type T.

我知道我可以使用对象,但我希望它是强类型的.所以我的问题是,是否有可能让这个工作.

Jef*_*ado 10

默认情况下,通用类型在具体定义中没有通用类型或接口.

让您的Setting<T>类实现接口(或从公共类派生)并创建该接口(或类)的列表.

public interface ISetting { }

public class Setting<T> : ISetting
{
    // ...
}

// example usage:
IList<ISetting> list = new List<ISetting>
{
    new Setting<int> { name = "foo", value = 2 },
    new Setting<string> { name = "bar", value "baz" },
};
Run Code Online (Sandbox Code Playgroud)