Kann ich eine variable deklarieren, die vom Typ<T> ohne Angabe von T zur compile-Zeit?

Wie lade ich die Klasse "MyContent" dynamisch ?
Ich habe 1 interface<T>, 1 abstract generic class<T> und 1. Klasse. Check mein code aus:

public interface IMyObjectInterface{
}
public abstract MyAbstractObject : IMyObjectInterface{
}
public class MyObject : MyAbstractObject{
}

public interface IMyContentInterface<T>  where T : MyAbstractObject
{
  void MyMethod();
}
public abstract MyAbstractContent<T>, IMyContentInterface<T>  where T : MyAbstractObject
{
  public abstract void MyMethod();
}
public public class MyContent : MyAbstractContent<MyObject>
{
  public override void MyMethod() { //do something }
}

Ich versuche aber offensichtlich funktioniert es nicht:

IMyObjectInterface obj = (IMyObjectInterface)Assembly.Load("MyAssembly").CreateInstance("MyObject");
IMyContentInterface<obj> content = (IMyContentInterface<obj>)Assembly.Load("MyAssembly").CreateInstance("MyContent");
content.MyMethod();
//assembly and type names are correct

Wenn ich IMyContentInterface<obj> zu IMyContentInterface<MyObject> funktioniert :

IMyContentInterface<MyObject> content = (IMyContentInterface<MyObject>)Assembly.Load("MyAssembly").CreateInstance("MyContent");
content.MyMethod();
//assembly and type names are correct

Das problem ist, dass ich weiß nicht, was ist mein Objekt in der 2. Zeile, bei der Definition IMyContentInterface<T>. Bitte, weiß jemand, wie es zu tun in .NET Framework 4.0?

  • Fettformatierung dein text macht es viel ärgerlicher und weniger gut lesbar. Unbolded ist die Standardeinstellung für einen Grund.
  • Zusätzlich, es sei denn Sie flüchten in Klammern den text, wie der generic-Parameter, Sie werden ausgeblendet, wenn Leistungen, die in diesem Fall Ihre Frage sehr schwer zu verstehen.
  • möglich, Duplikat der Ruft die generische Methode mit Typ-argument bekannt ist, nur bei der Ausführung
InformationsquelleAutor Fabio Costa | 2010-01-14
Schreibe einen Kommentar