5

文字列変数でクラスを初期化することは可能ですか?PHPのコードがあります。

<?php
  $classname = "test";

  $oTest = new $classname();

  class test{
  }
?>

これをC#で行うにはどうすればよいですか?

4

3 に答える 3

19
System.Activator.CreateInstance(Type.GetType(className))

ただし、問題は、C#3.0が静的に型指定された言語であるということです。返されたオブジェクトに対してランダムなメソッドを呼び出すことはできません。インスタンス化する可能性のあるクラスにいくつかの一般的なインターフェイスを実装させ、上記の式の結果をインターフェイスにキャストするか、リフレクションを手動で使用して、返されたオブジェクトのメソッドを呼び出すことができます。

于 2009-08-09T21:46:04.770 に答える
5

Activator.CreateInstanceメソッドを使用して、同様の結果を得ることができます。ただし、タイプの完全修飾名に加えて、アセンブリ名を指定する必要があります

var instance = Activator.CreateInstance("SomeAssemblyName","Some.Full.Type.Test");
于 2009-08-09T21:46:57.530 に答える
1

Activator.CreateInstanceを使用できます。さまざまなオーバーロードのドキュメントは次のとおりです:http://msdn.microsoft.com/en-us/library/system.activator.createinstance.aspx

于 2009-08-09T21:48:11.960 に答える