0

可能重复:
使用 c# 反射调用构造函数

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

在 PHP 中,我可以这样做:

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

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

就像我在 C# 中可以做的那样?

我有一个类似的视图列表

  • 人物视图
  • 屋景
  • 车景

和她的 ViewModel

  • 人视图模型
  • 房屋视图模型
  • 汽车视图模型

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

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

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

//etc

我想将 CommandParameter 传递给同一个命令

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

});
4

1 回答 1

2

您可以尝试Activator.CreateInstance

喜欢

Namespace.MyClass obj = (Namespace.MyClass)Activator.CreateInstance(typeof(Namespace.MyClass), new[] { param1, param2});
于 2012-05-05T17:54:35.413 回答