C# 如果类型为字符串,是否创建新对象?

C# 如果类型为字符串,是否创建新对象?,c#,reflection,C#,Reflection,可能重复: 如何从字符串变量调用类的构造函数 在PHP中,我可以做到这一点: $myclassName = '\Namespace\MyClass'; $myParameters = array ('param1', 'param2'); $reflection = new \ReflectionClass($myclassName ); $myClassInstance = $reflection->newInstanceArgs($myParameters); 就像我在C#中所

可能重复:

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

在PHP中,我可以做到这一点:

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

$reflection = new \ReflectionClass($myclassName ); 
$myClassInstance = $reflection->newInstanceArgs($myParameters);
就像我在C#中所做的那样

我有一个列表,上面有

  • 个人观点
  • 海景
  • 车景
还有她的模特儿

  • PersonViewModel
  • 房屋视图模型
  • 汽车视图模型
我的代码中有一个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 

});
你可以试试


这个问题()中的回答我不清楚,为什么要这样做?一般来说,你在PHP中所做的任何事情都是你不想在C#中做的。我写了我的类及其方法的名称,这样我可以让我的代码更易于维护。关键字是“反射”。我已经添加了标签。查看相关问题。我将尝试使用
var o=System.Activator.CreateInstance(Type.GetType(“FullNameSpaceClassName”)
Namespace.MyClass obj = (Namespace.MyClass)Activator.CreateInstance(typeof(Namespace.MyClass), new[] { param1, param2});