文字列を操作したい場合は、次の 2 つのオプションがあります。タイプをパラメーターとして取るGet
非ジェネリックを追加します。Get
public object Get(Type t)
;
そのため、文字列から作成された型を渡すことができます。2 番目のオプションはリフレクションです。
MethodInfo method = typeof(YourType).GetMethod("Get");
MethodInfo generic = method.MakeGenericMethod(myType);
次に、タイプ myType に閉じられているかのようにジェネリックを呼び出すことができます。
どちらを使用するかを提案でき、メソッドをリファクタリングできる場合は、Get
そのメソッドの非汎用バージョンを追加することをお勧めします。ライブラリ コードを本当に変更できない場合は、リフレクション バージョンが機能します。おそらくご想像のとおり、リフレクションを使用することの欠点はパフォーマンスです。リフレクションを使用できるかどうかを判断できます。
編集
もちろん、メソッドが実際に最終的なオブジェクトを作成するだけの場合、私の議論は当てはまりません:
この場合、アクティベーターは完全な型名を渡すことでチャームとして機能します。
Activator.CreateInstance(Type.GetType("yourtypename"));
タイプが ExecutingAssembly でない場合は名前空間とアセンブリで完全修飾する必要があるため、通常は単純な名前 ( Car、Bus など) だけに基づいてタイプを作成できます。この場合、コードの読みやすさを簡素化するために、何らかの規則/構成を使用する必要があります。
添加
パラメーターも渡す必要がある場合は、これらすべての問題を解決できる単純なIoC (特にお勧めしません。広く使用されているものを選択してください) を使用してみてください。