我怎样才能拥有通用的IEnumerable属性

时间:2015-09-04 15:09:18

标签: c# generics

我想在班上做这样的事情:

public IEnumerable<T> ItemsImported { get; set; }

这可能吗?

4 个答案:

答案 0 :(得分:3)

选项1

使该类具有通用性:

public class MyClass<T>
{
    public IEnumerable<T> ItemsImported { get; set; }
}

选项2

制作一对通用方法:

public IEnumerable<T> GetItemsImported<T>()
{
    // ...
}

public void SetItemsImported<T>(IEnumerable<T> value)
{
    // ...
}

答案 1 :(得分:1)

如果你有一个泛型类,那么是的,这是可能的:

public class Foo<T> 
{
    public IEnumerable<T> ItemsImported { get; set; }
}

答案 2 :(得分:1)

是的,但是你的班级也必须是通用的。

public class YourClass<T>()
{
   public IEnumerable<T> ItemsImported { get; set; }
}

玩得开心:)

答案 3 :(得分:0)

那么真正的问题应该是:你的班级是通用的吗?或者换句话说:您使用通用模板的意图是什么?如果你的课程必须是通用的,那么建议的解决方案是合适的,否则我会推荐两个中的一个:

  • 您的items与界面匹配,然后IEnumerable<IMyItem>是合适的
  • 您的items没有共同类型或界面,IEnumerable<object>应该完成这项工作。当然,您必须检查调用代码中实际对象的类型。