我实际上是为用户编写接口来创建不同类的实例。我正在使用winforms,以便如果代码说类具有int类型的属性,它提供了一个numbox,bool的复选框等。表单在运行时生成,显示的控件取决于数量和类型正在反映的类中的属性。
我需要获取用户输入的值并创建一个对象,其属性设置为这些值。问题是每个对象的属性数量和类型不同。我想要的是一些方法来做到以下几点:
Object o = new Object(property1, property2)
其中Object将被当前正在使用的任何类替换,并且参数将以适当数量的winform控件中的值替换。
类的类型限于有限列表,每个类都有一个上面样式的构造函数。所有课程都至少要设置一个属性。
答案 0 :(得分:0)
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();
将“assemblyName”替换为程序集的名称,将“className”替换为类的完全限定名称。 这应该为您提供灵活性,可以使用任意数量的构造函数参数创建任何类的实例。
答案 1 :(得分:0)
据我所知, 您需要有一个工厂类来创建和分配属性 以下信息可能有所帮助 要使用工厂类方法,您需要传递以下信息
用于分配属性值,循环遍历此字典 并使用反射分配值,如下面的示例所示
Type type = control.GetType();
PropertyInfo prop = type.GetProperty(“propertyName”);
prop.SetValue(control,propertyValue,null);
如果我的理解不正确,请在评论中添加有关您问题的更多信息