我不知道的类型对象列表C#

时间:2013-01-08 09:49:54

标签: c#

我在设计我的功能时遇到问题,因此它可以针对不同类型采取不同的行动。我的函数用于创建具有不同类型的对象列表,因此创建几个类似的函数不会有问题,但如果可能的话我想避免它让我的代码变短:

static const int FIRST_TYPE = 0;
static const int SECOND_TYPE = 1;
static const int THIRD_TYPE = 2;

我使用那些int作为函数的参数:

public void foo(int type)
{
    List<TypeIDontYetKnow> deserialized; 
    switch (type)
    {
        case FIRST_TYPE:
            deserialized = new List<A>();
            break;
        case SECOND_TYPE:
            deserialized = new List<B>();
            break;
        case THIRD_TYPE:
            deserialized = new List<C>();
            break;
    }
}

有可能实现这样的目标吗?

2 个答案:

答案 0 :(得分:11)

您需要通用方法

public void foo<T>()
{
    List<T> deserialized = new List<T>();
}

答案 1 :(得分:2)

可以使用IList的非通用deserialized来执行此操作,因为List<T>实现了它:

IList deserialized;

不应这样做。有关您要实现的目标的更多详细信息可能有助于我们为您提供更好的解决方案:

  • 首先MBen's answer通用方法
  • 如果ABC共同子类,则可能无法区分 在编译时在类型之间但在{中使用List<ABCBase> 第一名。