1
衍生我想創建一個動態類型與refelction發出這樣的:反射發出由的ObservableCollection
public class ObservableTestColleciton<T> : ObservableCollection<T>
{
public T Parent { get; set; }
public ObservableTestColleciton(T parent)
{
Parent = parent;
}
public ObservableTestColleciton(T parent, IEnumerable<T> source):base(source)
{
Parent = parent;
}
}
的代碼我不能完全是這樣的,如:
AppDomain myDomain = AppDomain.CurrentDomain;
AssemblyName myAsmName = new AssemblyName("AAB");
AssemblyBuilder myAssembly = myDomain.DefineDynamicAssembly(myAsmName,AssemblyBuilderAccess.Save);
ModuleBuilder myModule = myAssembly.DefineDynamicModule(myAsmName.Name,myAsmName.Name + ".dll");
TypeBuilder myType = myModule.DefineType("ObservableTestCollection", TypeAttributes.Class | TypeAttributes.Public);
string[] typeParamNames = { "T" };
GenericTypeParameterBuilder[] typeParams = myType.DefineGenericParameters(typeParamNames);
Type observableOf = typeof(ObservableCollection<>);
Type genOb = observableOf.MakeGenericType(typeParams[0]);
FieldBuilder myField = myType.DefineField("Parent", typeParams[0], FieldAttributes.Public);
ConstructorBuilder constructor = myType.DefineConstructor(MethodAttributes.Public, CallingConventions.HasThis, Type.EmptyTypes);
var type = myType.CreateType();
var obj = Activator.CreateInstance(type);
myAssembly.Save("AAB.dll");
你的幫助會非常感謝!
感謝安德烈Tretyak。這太棒了! –
嗨安德烈,我創建程序集並引用它消耗使類型「示例」,我在建立動態類型,我對[鏈接]發出問題有一些錯誤(http://stackoverflow.com/questions/41357408/reflection -emit-how-to-build-constructor-for-this)你能幫我擺脫這種陷阱嗎?提前致謝。 –
@JoonwK我在那裏添加了答案,請嘗試一下http://stackoverflow.com/a/41371734/1942296 –