2012-05-05 3 views
0

可能性の重複:文字列変数からクラスのコンストラクタを呼び出す方法
using c# reflection to call a constructorTypeを文字列として指定して新しいオブジェクトを作成しますか?

PHPでは、私はこれを行うことができます:私はC#で行うことができたよう

$myclassName = '\Namespace\MyClass'; 
$myParameters = array ('param1', 'param2'); 

$reflection = new \ReflectionClass($myclassName); 
$myClassInstance = $reflection->newInstanceArgs($myParameters); 

を?

私はPersonView

  • のような景色Oリストを持っている
  • HouseView
  • カービュー

と彼女のViewModel

  • PersonViewModel
  • HouseViewModel
  • CarViewModel

私は自分のコード内の1つのObservableCollectionを持っている私は、罠が

AddPersonView = new RelayCommand(() => 
{ 
    //code 
}); 

AddCarView = new RelayCommand(() => 
{ 
    //code 
}); 

//etc 

iが同じコマンド

AddView = new RelayCommand((name) => 
{ 
    // pseudo code 
    var o = CreateIntance(name + "View"); 
    o.DataContext = CreateIntance(name + "ViewModel"); 
    _observableList.Add(o); 
    // end 

}); 
+0

その質問(http://stackoverflow.com/q/3255697/816721)での応答と同様に

は私 – rkmax

+2

のための明確ではありませんなぜあなたはこれをしたいですか?一般に、PHPで何かしたことは、C#でやりたくないことです。 –

+0

私は自分のクラスとそのメソッドの名前を書いて、コードをもっと保守しておくことができるようにしました。 – rkmax

答えて

2
にCommandParameterを渡したい種類ごとに新しいコマンドを追加していけません

Activator.CreateInstanceを試すことができます。

Namespace.MyClass obj = (Namespace.MyClass)Activator.CreateInstance(typeof(Namespace.MyClass), new[] { param1, param2}); 
+0

私の例を見てください – rkmax

+0

は、 'var o = System.Activator.CreateInstance(Type.GetType(" FullNameSpaceClassName "));' – rkmax

+0

でうまくいきます。 –

関連する問題