Activate.CreateInstance 菜鸟问题
Noob Issue with Activate.CreateInstance
我正在努力能够在 运行 时间动态调用 class 的实例化。
今天上午的大部分时间我都在寻找 Google 的答案,但我在这个世界上还很新,所以我确信答案是有道理的,但对我来说却不是。
public class MSD : IGBRule
{
public MSD(GoverningBodyRulesGet_Result GBRule, int UserID)
{}
线路错误和错误都在下面
object v = Activator.CreateInstance(Type.GetType("RulesEngine.Rules.MSD, RulesEngine.Rules"), UserID, GBRules);
System.MissingMethodException: 'Constructor on type 'RulesEngine.Rules.MSD' not found.'
如果您想创建一个对象并将参数传递给构造函数,您必须以正确的顺序提供参数,与您在构造函数中指定的顺序相匹配。所以在你的情况下,你想在用户 id:
之前传递规则
var type = Type.GetType("RulesEngine.Rules.MSD, RulesEngine.Rules");
object v = Activator.CreateInstance(type, GBRules, UserID);
如果您将构造函数参数直接传递给 CreateInstance
方法,您必须小心处理常见类型,因为您可能不小心选择了一个不调用的 different overload正确的构造函数。您可以通过传递带有您要传递的参数的对象数组来避免这种情况:
var type = Type.GetType("RulesEngine.Rules.MSD, RulesEngine.Rules");
object[] args = new object[] { GBRules, UserID };
object v = Activator.CreateInstance(type, args);
我正在努力能够在 运行 时间动态调用 class 的实例化。
今天上午的大部分时间我都在寻找 Google 的答案,但我在这个世界上还很新,所以我确信答案是有道理的,但对我来说却不是。
public class MSD : IGBRule
{
public MSD(GoverningBodyRulesGet_Result GBRule, int UserID)
{}
线路错误和错误都在下面
object v = Activator.CreateInstance(Type.GetType("RulesEngine.Rules.MSD, RulesEngine.Rules"), UserID, GBRules);
System.MissingMethodException: 'Constructor on type 'RulesEngine.Rules.MSD' not found.'
如果您想创建一个对象并将参数传递给构造函数,您必须以正确的顺序提供参数,与您在构造函数中指定的顺序相匹配。所以在你的情况下,你想在用户 id:
之前传递规则var type = Type.GetType("RulesEngine.Rules.MSD, RulesEngine.Rules");
object v = Activator.CreateInstance(type, GBRules, UserID);
如果您将构造函数参数直接传递给 CreateInstance
方法,您必须小心处理常见类型,因为您可能不小心选择了一个不调用的 different overload正确的构造函数。您可以通过传递带有您要传递的参数的对象数组来避免这种情况:
var type = Type.GetType("RulesEngine.Rules.MSD, RulesEngine.Rules");
object[] args = new object[] { GBRules, UserID };
object v = Activator.CreateInstance(type, args);