我有一个类
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" },
};