如何填充由 Activator.CreateInstance() 方法创建的实例

本文关键字:方法 创建 实例 CreateInstance 何填充 填充 Activator | 更新日期: 2023-09-27 18:32:14

class Program
{
    static void Main()
    {
        testclass tc = new testclass();
        Type tt = tc.GetType();
        Object testclassInstance = Activator.CreateInstance(tt);
        PropertyInfo prop = tt.GetProperty("name");
        MethodInfo MethodName = tt.GetMethod("set_" + prop.Name);
        string[] parameters = new string[2];
        parameters[0] = "first name of the bla bla";
        MethodName.Invoke(testclassInstance, parameters);
        Console.WriteLine(testclassInstance.GetType().GetProperty("name").GetValue(testclassInstance, null));
        Console.ReadLine();
    }
}
class testclass
{
    public string name { get; set; }
}

输出错误消息为:

参数计数不匹配

我不想为 testClass 创建构造函数并像那样传递参数/填充。 我想一个接一个地填充它的属性。

请链接其他有用的实例填充方法。 我知道这是最愚蠢的。

如何填充由 Activator.CreateInstance() 方法创建的实例

看看这个问题:如何创建一个类的实例,并从像会话这样的 Bag 对象设置属性

Type myType = Type.GetType(className);
var instance = System.Activator.CreateInstance(myType);
PropertyInfo[] properties = myType.GetProperties();
foreach (var property in properties)
{
    if (property.CanWrite) 
    {
        property.SetValue(instance, session[property.Name], null);
    }
}

它就像:

prop.SetValue(testclassInstance, "first name of the bla bla");