创建一个给定字符串形式的 Type 的新对象

本文关键字:Type 新对象 对象 一个 创建 字符串 | 更新日期: 2023-09-27 18:33:14

可能的重复项:
使用 C# 反射调用构造函数

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

在PHP中,我可以这样做:

$myclassName = ''Namespace'MyClass';
$myParameters = array ('param1', 'param2');
$reflection = new 'ReflectionClass($myclassName ); 
$myClassInstance = $reflection->newInstanceArgs($myParameters);

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

我有一个列表 o 视图,例如

  • 人物视图
  • 房屋景观
  • 汽车景观

和她的视图模型

  • 人物视图模型
  • 房屋景观模型
  • 车景模型

我的代码中有一个可观察集合,我不想为每种类型添加新命令

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

我想将命令参数传递给同一个命令

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

创建一个给定字符串形式的 Type 的新对象

您可以尝试 Activator.CreateInstance。

喜欢

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