Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Activator.CreateInstance,类型名称为字符串,包括参数_C# - Fatal编程技术网

C# Activator.CreateInstance,类型名称为字符串,包括参数

C# Activator.CreateInstance,类型名称为字符串,包括参数,c#,C#,我在.NET3.5中工作,查看Activator.CreateInstance的所有各种构造函数。我想创建一个类的实例,调用一个特定的构造函数。我没有类类型,只有它的名称。我有下面的方法,可以工作,但实际上首先调用无参数构造函数,然后调用我想要的构造函数。这不是什么大不了的事,但是无参数构造函数调用了一个相当繁忙的基构造函数,我想调用的构造函数也会调用 换句话说,给定一个类型,用参数调用CreateInstance很容易(只在下面的最后两行),但只给定一个类型名,有没有更好的方法 ObjectH

我在.NET3.5中工作,查看Activator.CreateInstance的所有各种构造函数。我想创建一个类的实例,调用一个特定的构造函数。我没有类类型,只有它的名称。我有下面的方法,可以工作,但实际上首先调用无参数构造函数,然后调用我想要的构造函数。这不是什么大不了的事,但是无参数构造函数调用了一个相当繁忙的基构造函数,我想调用的构造函数也会调用

换句话说,给定一个类型,用参数调用CreateInstance很容易(只在下面的最后两行),但只给定一个类型名,有没有更好的方法

ObjectHandle oh = Activator.CreateInstance( "MyDllName", "MyNS." + "MyClassName" );
object o = oh.Unwrap( );
object newObj = Activator.CreateInstance( o.GetType( ), new object[] { param1 } );
return ( IMyDesiredObject )newObject;

谢谢

您可以使用此重载。它允许您按名称(字符串)以及构造函数参数(第6个参数)指定类型。

您可以使用此重载。它允许您通过名称(字符串)以及构造函数参数(第6个参数)指定类型。

我实现这一点的方法是

  Type type = BuildManager.GetType(ServiceRef + ".SDK",false);

  Object nl = Activator.CreateInstance(type);

BuildManager.GetType
需要完全限定的类名,在您的例子中,这是传递“MyNS”的地方。+“MyClassName”

我能够让它工作的方式是

  Type type = BuildManager.GetType(ServiceRef + ".SDK",false);

  Object nl = Activator.CreateInstance(type);
BuildManager.GetType
需要完全限定的类名,在您的例子中,这里是传递“MyNS”+“MyClassName”

谢谢您,里德--我看到了那个家伙,但我不知道如何处理ActivationAttributes和SecurityInfo。这些文档没有指出(与活页夹和区域性一样)它们可以为null,但事实证明它们可以。为我工作!谢谢你,里德--我见过那个家伙,但我不知道如何处理ActivationAttributes和SecurityInfo。这些文档没有指出(与活页夹和区域性一样)它们可以为null,但事实证明它们可以。为我工作!