私は基本的な抽象クラスをいくつか持っていますが、それを拡張してオーバーライドしますが、それらはすべて同じコンストラクタを持っています。今私はswitch文から各コンストラクタを呼び出します:クラスのインスタンス化を抽象化
など、約10クラスです。ジェネリックスやデリゲートがクラス名を取り、その型を引数でインスタンス化するメソッドを作る方法はありますか?
私はコンストラクタを変更すると、各インスタンス化も変更する必要があるので、これは役に立ちます。
代議員は最も簡単ですが、リサーチは委任者にコンストラクタを割り当てることはできません。
追加: 私のノートパソコンではなく、ノートパソコンで無線LANに接続していますので、ここにコードがあります。
これは今、何が起こるかの例です:
switch (new Random().Next(4))
{
case 3:
// classA : baseClass, args{int, bool, otherClass}
return new classA(arg1, arg2, arg3);
case 2:
// classB : baseClass, args{int, bool, otherClass}
return new classB(arg1, arg2, arg3);
case 1:
// classC : baseClass, args{int, bool, otherClass}
return new classC(arg1, arg2, arg3);
case 0:
// classD : baseClass, args{int, bool, otherClass}
return new classD(arg1, arg2, arg3);
default:
continue;
}
私は三つの引数を持つブロックの最後に1つのインスタンス化を呼び出すしたいと思います。私が考え
ソリューションは、これに似た働きクラスを作成し、インスタンシすることです:
ClassInstantiator inst = new ClassInstantiator(arg1, arg2, arg3);
switch(new Random().Next(4))
{
case 4:
return inst.instantiate<classA>();
...
}
は、すでに言語に組み込まれてこれは、以上のエレガントなソリューションの人を知っているのですか?
+1大きな質問です。 –
アクティベーターが私が上で部分的に説明した技術であるとさらに考えた後、私は実現する。 – kskid19