So erhalten Sie den Werttyp in enum

9

Sehen wir uns den folgenden Code an und nehmen an, dass sowohl MyAttribute als auch test function nicht geändert werden können.

%Vor%

Ich würde erwarten, dass test return B , aber es gibt 2 zurück. Generierte IL-Code zeigt, dass Informationen über Aufzählungstyp verloren ist und Wert an Attribut übergeben ist nur 2.

Gibt es einen Weg (ich denke, es sollte ein Attribut sein), um den Typ des Attributwerts zu erhalten? Was mehr interessanten äquivalenten Code in C # funktioniert wie erwartet

Äquivalent C #:

%Vor%     
Novakov 01.03.2016, 20:29
quelle

1 Antwort

1

Ich vermute, und mein Wissen über die Interna des Compilers ist eigentlich sehr begrenzt, aber ich denke, das hat etwas mit Typinferenz zu tun. Es gibt eine Äquivalenz zwischen int & lt; - & gt; Enum, und ich vermute, dass die Typinferenz dies auf den niedrigsten möglichen Typ reduziert, in diesem Fall int. Sie können dies beheben, indem Sie Folgendes tun

%Vor%     
Colin Bull 10.03.2016 16:03
quelle

Tags und Links