Sehen wir uns den folgenden Code an und nehmen an, dass sowohl MyAttribute
als auch test
function nicht geändert werden können.
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%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%Tags und Links attributes f# enums value-type