如何使用反射创建对象并执行方法
本文关键字:执行 方法 创建对象 何使用 反射 | 更新日期: 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);
}