我有一个基类,其是如下:C#激活的createInstance用于扩展类
public Data()
{
id = num++;
SetVariables();
}
//fill every Variable varNames, parseInduction, noise, seperator in Children Classes
public Data(String line)
{
//first declare all variables in sub classes
if (id == 0)
throw new NotSupportedException("You are not allowed to use this constructor for creating the first instance!");
id = num++;
SetVariables();
parseLine(line);
}
我也有一个子类扩展此类。
class DienstGruppe : Data
{
protected override void SetVariables(){
varNames = new String[] {"id", "name"};
parseInduction = "DienstGruppen = {";
parseEnd = "};";
beginOfDataLine = "<";
endOfDataLine = ">";
noise = new String[] { "\"" };
}
}
我尝试与Activator.CreateInstance()函数创建一个对象如下:
Data myData = (Data)Activator.CreateInstance(this.GetType(), new object[] { line });
注:this.GetType()是数据的函数由延伸类使用,获取当前类的类型。
但是,这会导致一个问题。 Bizzarly我得到一个错误,该类(在我的情况下DienstGruppe)没有构造函数。我猜遗传在c#中和java中不一样。那我该如何解决这个问题呢?
它为“数据”虽然。
问候,多米尼克
什么是确切的错误信息? – Jetti
变量'line'的类型是什么?您必须确保参数列表和类型匹配。 – MgSam
我认为已经有了Pavel应该解决的答案。 线是一个字符串。 –