自己参照型コレクションプロパティを定義する方法は? タイプReflection Type Builderでビルドします。 方法:リフレクトを使用して自己参照型プロパティを定義する方法C#
public class Sample
{
public Sample()
{
Items = new List<Sample>();
}
public List<Sample> Items { get; set; }
Public void AddSample(Sample item)
{
items.Add(item);
}
}
コード
は、私はあなたがフィールドを発することによって、手動で「バッキングフィールド」を定義して、プロパティのゲッターとセッターを定義する必要が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");
読者には間違いがありますか?問題の内容を明記してください。エラーメッセージ、例外の詳細、出力、または望ましくないまたは予期しないその他の動作を含めます。 –
素晴らしいと素晴らしい。 –