我可以创建一个列表<类< T>>? [英] Can I create a List<Class<T>>?

查看:120
本文介绍了我可以创建一个列表<类< T>>?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个类

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

    public T value { get; set; }
}

现在我想创建一个的IList&lt;设定&LT; T&GT;&GT; ,但不同类型的的设置&LT; T&GT; 的在里面T,我想要的eG

now I want to create an IList<Setting<T>> but with different types of Setting<T>'s T in it, I want e.G.

List<Setting<T>> settingsList;
settingsList.Add(new Setting<int>());
settingsList.Add(new Setting<string>()); 

我已经试过的IList&lt;设定&LT; T&GT;&GT; 但这似乎不可能的,因为编译器未找到类型 T

I've tried IList<Setting<T>> but this seems not possible since the compiler doesn't find Type T.

我知道,我可以使用对象,但我希望它是强类型。所以我的问题是,如果没有得到这个工作的可能性。

I know that I could use object but I want it to be strongly typed. So my question is if there is a possibility of getting this working.

推荐答案

泛型类型没有一个共同的类型或接口之间默认情况下具体的定义。

Generic types do not have a common type or interface amongst concrete definitions by default.

让你的设置&LT; T&GT; 类实现一个接口(或从通用类派生),并创建一个接口(或类)的列表

Have your Setting<T> class implement an interface (or derive from a common class) and create a list of that interface (or class).

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

这篇关于我可以创建一个列表&LT;类&LT; T&GT;&GT;?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆