C# - 反射 - 识别重载的构造函数

时间:2009-09-22 10:19:15

标签: c#

我需要识别重载的构造函数以使用反射传递值。部分代码是:

            asm=Assembly.Load("RulesLibrary");

            Type t = asm.GetType("RulesLibrary.MedicalInsuranceRules");

            object ActObj = Activator.CreateInstance(t); 

            object[] conparam = new object[2];

            conparam[0] = "RuleID"; // string

            conparam[1] =12; // int

// How to find out the overloaded constructor in Type MedicalInsuranceRules

            ConstructorInfo cinfo = t.GetConstructor();

            cinfo.Invoke(ActObj, conparam);

假设MedicalInsuranceRules类型包含重载的构造函数

 public   MedicalInsuranceRules( ){}
 public   MedicalInsuranceRules(string ruleID,int subSection ){}
 public   MedicalInsuranceRules(string ruleID,
                                int subSection,string majorDocID ){}

如何在反射过程中匹配excat构造函数?

3 个答案:

答案 0 :(得分:4)

Type.GetConstructor有一个重载,您可以在其中指定构造函数参数的类型,例如

var ciInfo = t.GetConstructor(new[] { typeof(string), typeof(int) });

答案 1 :(得分:1)

使用带有一系列类型作为参数的GetConstructor overload

答案 2 :(得分:0)

使用GetConstructors方法代替GetConstructor,然后查看获得的每个Parameters的{​​{1}}属性,以便搜索您想要的属性。