在Type为字符串的情况下创建一个新对象?

时间:2012-05-05 17:45:02

标签: c# reflection

  

可能重复:
  using c# reflection to call a constructor

如何从字符串变量调用类的构造函数?

在PHP中,我可以这样做:

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

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

我能用C#做什么?

我有一个类似

的列表
  • PersonView
  • HouseView
  • Carview会

和她的ViewModel

  • PersonViewModel
  • HouseViewModel
  • CarViewModel

我的代码中有一个ObservableCollection我不会为每种类型添加一个新命令

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

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

//etc

我想将CommandParameter传递给同一个Command

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

});

1 个答案:

答案 0 :(得分:2)

您可以尝试Activator.CreateInstance

喜欢

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