19

私が求めているものが利用可能かどうかはわかりませんが、それが存在するかどうか、そしてそれがどのように機能するかを知りたいだけです。だからここに私の質問があります:

独自のカスタム モデル クラスが 2 ~ 3 あります。たとえば、顧客、従業員、製品などです。これで、クラス名が文字列になりました。文字列に含まれるクラス名に基づいて、そのオブジェクトを作成し、VIEW に戻る必要があります。どうすればこれを達成できますか?

ステートメントのオプションは知っていますが、より良い「ダイナミックIF ELSE」な方法を試してみたい...

4

4 に答える 4

42

クラス名を文字列に含めるだけでは、そのインスタンスを作成できません。実際のところ、オブジェクトを作成するには、クラス名を含む完全な名前空間が必要になります。

あなたが以下を持っていると仮定します:

string className = "MyClass";
string namespaceName = "MyNamespace.MyInternalNamespace";

MyNamespace.MyInternalNamespace.MyClass次のいずれかの手法を使用して、そのクラスのインスタンス、クラスのオブジェクトを作成できます。

var myObj = Activator.CreateInstance(namespaceName, className);

またはこれ:

var myObj = Activator.CreateInstance(Type.GetType(namespaceName + "." + className));

これがお役に立てば幸いです。そうでない場合はお知らせください。

于 2013-03-16T18:17:09.433 に答える