Ich verwende Reflection.Emit, um einen neuen Typ zu definieren, und ich möchte, dass der Typ IComparable(T)
implementiert, wobei T
der neu definierte Typ wäre.Verwenden von Reflection.Emit, um generische Schnittstelle zu implementieren
class DefinedType : IComparable<DefinedType>
{
//...
}
Es scheint mir, als hätte ich ein Huhn-und-Ei-Problem.
Als Fallback kann ich immer nur IComparable
implementieren, aber wenn möglich, würde ich gerne die generische Schnittstelle; Ich kann einfach nicht sehen, wie ich Emit verwenden kann, weil der Typ nicht existiert, bevor ich ihn definiere.
Ich wünschte, ich hätte Zeit mit diesem .. aber ich freue mich auf jemand anderes zu antworten! –
Ich sehe eine Methode ['addInterfaceImplementation'] (http://msdn.microsoft.com/en-us/library/system.reflection.emit.typebuilder.addinterfaceimplementation (v = vs.110) .aspx), die Sie aufrufen können auf Ihrem ['TypeBuilder'] (http://msdn.microsoft.com/en-us/library/system.reflection.emit.typebuilder (v = vs.110) .aspx), nachdem Sie einen neuen Typ erstellt haben. Wären Sie nicht in der Lage, das "Comparable" hinterher mit diesem Verfahren zu Ihrem Typ hinzuzufügen? –
@JeroenVannevel Ich glaube nicht, dass das erlaubt ist. Ich bin mir ziemlich sicher, dass Sie 'CreateType' nur einmal aufrufen können. – Anthony