次のような基本クラスがあります。
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() は、現在のクラスの Type を取得するために、拡張クラスによって Data の関数で使用されます。
しかし、これは問題を引き起こします。奇妙なことに、クラス (私の場合は DienstGruppe) にコンストラクターがないというエラーが表示されます。C# の継承は Java と同じではないと思います。では、どうすればこの問題を解決できますか?
ただし、「データ」に対しては機能します。
よろしく、 ドミニク