我正在运行时加载程序集并尝试在运行时执行大量操作,这太过分了,但无论如何这就是我想要实现的目标:
我在运行时加载的外部程序集中有一个名为 student 的类
public class Student
{
public bool IsGood { get; set; }
public StudentType St { get; set; }
public University University { get; set; }
}
我可以通过执行以下操作从程序集中动态加载对象:
var assembly = Assembly.LoadFrom("//path");
Type type = assembly.GetType("TestFrameWork.Student");
var student = Activator.CreateInstance(type);
现在,轮到设置属性,这些属性也具有从外部程序集中动态加载的某些类型。
Type UniversityType = assembly.GetType("TestFrameWork.University");
type.GetProperty("University").SetValue(student, Activator.CreateInstance(UniversityType), null);
好的部分是它也有效!
但
这是问题开始的地方。当我尝试分配来自同一个程序集的枚举 StudentType 时,它失败并出现错误
'System.Reflection.MdFieldInfo' 类型的对象无法转换为
输入“我的枚举”
这就是我试图设置它的方式:
type3 = assembly.GetType("TestFrameWork.StudentType");
type.GetProperty("St").SetValue(student, type3.GetField("Good"), null);
此代码失败..