我的神奇语法如下所示:
public List<T> LoadItems(string fileName) where T : new (Dictionary<string,string>)
{
...
List<T> List = new List<T>();
while(reader.peek() != -1)
{
Dictionary<string, string> NameValuePairs = new Dictionary<string,string>();
...
//parse file and load dictionary with name value pairs
...
List.Add(new T(NameValuePairs));
}
}
我希望能够像这样调用这个函数......
public List<Class1> LoadClass1()
{
return LoadItems<Class1>("file1.csv");
}
public List<Class2> LoadClass1()
{
return LoadItems<Class2>("file2.csv");
}
public LisT<Class3> LoadClass1()
{
return LoadItems<Class3>("file3.csv");
}
我意识到这不能像这样做,但有没有办法实现这样的工作,也许使用我的三个类的接口?
答案 0 :(得分:1)
如果您的类Class1,Class2,Class3都将字典作为构造函数参数,您可以让它们从公共基类继承并使用Activator.CreateInstance(typeof(T), NameValuePairs)
创建类的实例。
如果你走这条路线,你会想要制作通用约束where T : BaseClass
,并围绕你的类型创建做一些错误检查/异常处理。