実行時にアセンブリをロードし、実行時に多くの操作を実行しようとしていますが、これは行き過ぎですが、とにかくこれが私が達成しようとしていることです:
実行時にロードしている外部アセンブリに学生というクラスがあります
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' のオブジェクトを変換できません
「MyEnum」と入力します
これは私がそれを設定しようとしている方法です:
type3 = assembly.GetType("TestFrameWork.StudentType");
type.GetProperty("St").SetValue(student, type3.GetField("Good"), null);
このコードは失敗します..