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