C# 创建从通过反射获得的一组类型中选择的特定类型的对象
我本质上是在为用户编写一个界面来创建不同类的实例。我使用winforms,因此如果代码说类具有int类型的属性,它会提供一个numbox、bool的复选框等。表单是在运行时生成的,显示的控件取决于所反映的类中属性的数量和类型 我需要获取用户输入的值,并创建一个属性设置为这些值的对象。问题是每个对象的属性数量和类型都不同。我想通过某种方式实现以下目标:C# 创建从通过反射获得的一组类型中选择的特定类型的对象,c#,winforms,reflection,C#,Winforms,Reflection,我本质上是在为用户编写一个界面来创建不同类的实例。我使用winforms,因此如果代码说类具有int类型的属性,它会提供一个numbox、bool的复选框等。表单是在运行时生成的,显示的控件取决于所反映的类中属性的数量和类型 我需要获取用户输入的值,并创建一个属性设置为这些值的对象。问题是每个对象的属性数量和类型都不同。我想通过某种方式实现以下目标: Object o = new Object(property1, property2) 其中,对象将替换为当前使用的任何类,参数将替换为winf
Object o = new Object(property1, property2)
其中,对象将替换为当前使用的任何类,参数将替换为winform控件中相应数量的值
该类可以是的类型被限制为有限列表,并且每个类都有一个上述样式的构造函数。所有类都至少要设置一个属性。List parms=new List();
List<object> parms = new List<object>();
parms.Add(property1);
parms.Add(property2);
ObjectHandle objHandle = Activator.CreateInstance("assemblyName", "className", false, null, null, parms.ToArray(), null, null );
object workingObject = objHandle.Unwrap();
添加参数(属性1);
添加参数(属性2);
ObjectHandle objHandle=Activator.CreateInstance(“assemblyName”、“className”、false、null、null、parms.ToArray()、null、null);
object workingObject=objHandle.Unwrap();
用程序集的名称替换“assemblyName”,用类的完全限定名替换“className”。
这将使您能够灵活地创建具有任意数量构造函数参数的任何类的实例。据我所知,
您需要有一个工厂类来创建和分配属性
以下信息可能会有所帮助。
对于工厂类方法,您需要传递以下信息
如果我的理解不正确,请在评论中添加更多关于您问题的信息,这样我的构造函数就不会像我希望的那样工作了(这不是我的代码,所以我无法更改它们),但是基于我得到的错误,如果它们按预期工作,您的答案将是完美的。