1
ich mit refelction dynamischen Typ erstellen möchten emittieren wie:Reflection Emit Abgeleitet von 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;
}
}
Der Code, den ich konnte nicht abgeschlossen ist dies wie:
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");
Ihre Hilfe wäre viel geschätzt !!
Dank Andrey Tretyak. Es ist großartig !!! –
Hallo Andrey, ich habe Assembly erstellt und referenziert, um es zu konsumieren, um den Typ "Sample" zu machen, und ich habe einen Fehler beim Erstellen des dynamischen Typs bekommen, den ich Frage auf [link] (http://stackoverflow.com/questions/41357408/reflection -emit-how-to-build-constructor-for-this) Kannst du mir helfen, aus dieser Falle herauszukommen? Danke im Voraus. –
@JoonwK Ich habe Antwort dort hinzugefügt, bitte versuchen Sie es http://StackOverflow.com/A/41371734/1942296 –