Sie müssten einen generischen Typparameter eingeben. Davon abgesehen verwende ich manchmal ein Vererbungsschema, um diese Funktionalität zu erhalten, ohne den generischen Typparameter eingeben zu müssen.
%Vor% Damit behalten Sie die gleiche FoosHeight, unabhängig von dem generischen Typparameter, der in Foo<T>
übergeben wurde. Wenn Sie für jede Version von Foo<T>
einen anderen Wert wünschen, müssen Sie einen Typ auswählen, der in diesen Typparameter eingefügt werden soll, und das Vererbungsschema vergessen.
Sie müssen einen Typ angeben, z. B.
%Vor%oder
%Vor% aber jeder ist getrennt. Foo<int>.FoosHeight
ist nicht verwandt mit Foo<Bar>.FoosHeight
. Sie sind effektiv zwei getrennte Klassen mit zwei verschiedenen statischen Feldern. Wenn Sie möchten, dass der Wert für alle Foo & lt; & gt; dann brauchst du einen separaten Platz um es zu speichern wie
Und FooHelper hat keine formale Beziehung zu Foo
Jedes spezifische generische Element ist ein eigener Typ und hat daher eine eigene statische Variable. Ein Foo<int>
hätte also ein anderes Mitglied der statischen Höhe als ein Foo<string>
. Wenn Sie das für alle spezifischen Foo<T>
-Typen freigeben möchten, müssen Sie dies woanders implementieren.
Wenn Sie wirklich nur den Wert für einen Foo<object>
-Typ festlegen möchten, dann ist es nur das: Foo<object>
.