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);