C# 在编译时不知道类型的情况下创建IEnumerable[]
在编译时,我必须在不知道类型的情况下创建实例 我的代码是这样的:C# 在编译时不知道类型的情况下创建IEnumerable[],c#,C#,在编译时,我必须在不知道类型的情况下创建实例 我的代码是这样的: IEnumerable[] columns = new IEnumerable[5]; columns[0] = new string[]{}; 我必须能够在不知道类型(在上面的示例中是字符串)的情况下创建列[0] 我找不到解决问题的办法,欢迎任何建议 提前感谢。您可以像这样使用泛型: class MyBusiness<T> where T: new() { public List&l
IEnumerable[] columns = new IEnumerable[5];
columns[0] = new string[]{};
我必须能够在不知道类型(在上面的示例中是字符串)的情况下创建列[0]
我找不到解决问题的办法,欢迎任何建议
提前感谢。您可以像这样使用泛型:
class MyBusiness<T> where T: new()
{
public List<T> coll { get; set; }
public MyBusiness(){
coll = new List<T>();
}
public void DoSth(){
T t = new T();
coll.Add(t);
}
}
classmybusiness其中T:new()
{
公共列表coll{get;set;}
公共事业(){
coll=新列表();
}
公开无效DoSth(){
T=新的T();
coll.Add(t);
}
}
您将需要查看。它们允许您创建一个不需要知道类型的类,直到您使用它
public class Column<T>
{
public T Item { get; set; }
}
公共类列
{
公共T项{get;set;}
}
因此,您可以在程序中使用它,如下所示:
var columns = new IEnumerable<Column<string>>();
var columns=new IEnumerable();
查找泛型类型。为什么不使用所有类的父类System.Object
。@ChristophKn这和dynamic
就像使用火箭发射器杀死苍蝇一样。你会造成更多的伤害。正如已经提到的,泛型是一条路。你真的应该考虑一种不同的方法,看起来你的设计有一些弱点。事实上,我有这样的东西:列[0]=新字符串[]{“a”、“a”、“a”、“a”、“b”、“b”、“b”};我不希望它是静态的,我希望能够确定类型并在运行时添加元素