자체 참조 된 컬렉션 속성을 정의하는 방법? 유형 반사 유형 빌더로 빌드하고 싶습니다. 방법 : 리플렉션을 사용하여 자체 참조 유형 속성 정의 C#
public class Sample
{
public Sample()
{
Items = new List<Sample>();
}
public List<Sample> Items { get; set; }
Public void AddSample(Sample item)
{
items.Add(item);
}
}
코드
나는 당신이 필드를 방출하여 수동으로 "백업 필드"를 정의하고 속성에 대한 getter와 setter를 정의해야AppDomain myDomain = AppDomain.CurrentDomain;
AssemblyName myAsmName = new AssemblyName("GenericEmit");
AssemblyBuilder myAssembly = myDomain.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.RunAndSave);
ModuleBuilder myModule = myAssembly.DefineDynamicModule(myAsmName.Name, myAsmName.Name + ".dll");
TypeBuilder myType = myModule.DefineType("Sample", TypeAttributes.Public);
Type listOf = typeof(List<>);
Type selfContained = listOf.MakeGenericType(myType);
myType.DefineProperty("Items", PropertyAttributes.None, selfContained, null);
Type type= myType.CreateType();
Activator.CreateInstance(type);
myAssembly.Save(myAsmName.Name + ".dll");
독자에게 명백한 오류가 있습니까? 문제가 무엇인지 설명하십시오. 바람직하지 않거나 예기치 않은 오류 메시지, 예외 세부 사항, 출력 또는 기타 동작을 포함시킵니다. –
놀랍고 훌륭한. –