我有一个类

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

    public T value { get; set; }
}

现在我想创建一个IList<Setting<T>>,但是要在其中添加不同类型的Setting<T>的T,例如
List<Setting<T>> settingsList;
settingsList.Add(new Setting<int>());
settingsList.Add(new Setting<string>());

我已经尝试过IList<Setting<T>>,但这似乎是不可能的,因为编译器没有找到Type T

我知道我可以使用对象,但是我希望它是强类型的。所以我的问题是,是否有可能使它正常工作。

最佳答案

默认情况下,泛型类型在具体定义之间没有通用类型或接口(interface)。

Setting<T>类实现一个接口(interface)(或从一个通用类派生)并创建该接口(interface)(或类)的列表。

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" },
};

10-08 18:03