如何使用反射创建对象并执行方法

本文关键字:执行 方法 创建对象 何使用 反射 | 更新日期: 2023-09-27 18:29:47

我有这个类:

public class StructTest
{
    public StructTest()
    {
    }
    public void Start()
    {
        // do something
    }
}

我想动态地创建类StructTest的一个实例,并使用反射执行其方法"Start"。但是下面的代码抛出了一个异常:

Assembly current = Assembly.GetExecutingAssembly();
        string nomeClasse = "StructTest";
        foreach (var classInAssembly in current.GetTypes().Where(p => p.IsClass).Where(p => p.Name.Equals(nomeClasse)))
        {
            Type type = classInAssembly.GetType();
            var classe = Activator.CreateInstance(type, null); // Here the VS says theres no paramterless contructor for this class without parameters
            IEnumerable<MethodInfo> methodList = classInAssembly.GetMethods().Where(p => p.Name.Equals("Start"));
            MethodInfo method = methodList.First();
            method.Invoke(classe, null);
        }

如何使用反射创建对象并执行方法

foreach (var type in current.GetTypes().Where(p => p.IsValueType && p.Name.Equals(nomeClasse))) {
        var classe = Activator.CreateInstance(type);
        MethodInfo method = type.GetMethod("Start");
        method.Invoke(classe, null);
}