Nun, da wir die generische Kovarianz und Kontravarianz für Interfaces und Delegaten in C # haben, war ich nur neugierig, wenn Sie eine Type
angeben, können Sie die Kovarianz / Kontravarianz ihrer generischen Argumente herausfinden. Ich fing an, zu versuchen, meine eigene Implementierung zu schreiben, die alle Methoden auf einem gegebenen Typ durchsehen und sehen würde, ob die Rückgabetypen und oder Argumente mit den Typen in den allgemeinen Argumenten übereinstimmen. Das Problem ist, dass selbst wenn ich das habe:
mit meiner Logik, es sieht aus wie es sollte kontravariant sein, aber da wir eigentlich nicht spezifiziert:
%Vor%(der Parameter in) ist nicht wirklich kontravariant. Was zu meiner Frage führt: Gibt es eine Möglichkeit, die Varianz generischer Parameter zu bestimmen?
Ich weiß nicht, warum Sie das wollen, ABER Sie können es mit Reflexion von außerhalb des Typs betrachten. Hier finden Sie Informationen zum Betrachten generischer Parameter für einen Typ mit Reflektion:
Insbesondere die Eigenschaft Type.GenericParameterAttributes des Typs, den Sie von einem Aufruf von Type.GetGenericParameters zurückerhalten, zeigt die Co / Contravariance-Eigenschaften des generischen Arguments ... es ist eine bitweise Enumeration, die die Kombination dieser Informationen aufdeckt:
Wirklich interessant ... danke, dass du das fragst und mich nachsehen lässt.
Tags und Links c# reflection covariance contravariance