C # - Wie kann man auf ein statisches Member einer Klasse zugreifen, wenn eine Instanz dieser Klasse angegeben wird?

7

Angenommen, Sie haben in C # ein Objekt (zB myObject ), das eine Instanz der Klasse MyClass ist. Wie würden Sie mit myObject nur auf ein statisches Mitglied von MyClass zugreifen?

%Vor%     
JaysonFix 14.07.2009, 14:12
quelle

3 Antworten

25

Sie müssten Reflexion verwenden:

%Vor%

Ich würde im Allgemeinen versuchen, dies zu vermeiden, aber ... es ist sehr spröde. Hier ist eine Alternative mit normaler Vererbung:

%Vor%

usw.

Dann können Sie einfach myObject.Value verwenden, um den richtigen Wert zu erhalten.

    
Jon Skeet 14.07.2009, 14:13
quelle
10

Wenn Sie die Kontrolle über MyClass haben und dies häufig tun müssen, würde ich eine Mitgliedseigenschaft hinzufügen, die Ihnen Zugriff gewährt.

%Vor%     
Lou Franco 14.07.2009 14:15
quelle
4

Sie müssen einfach verwenden: MyClass.i

Um etwas zu erklären, müssen Sie, um ein statisches Mitglied zu verwenden, etwas über die Klasse wissen. Und eine Objektreferenz zu haben ist irrelevant. Der einzige Weg, ein Objekt wäre von Bedeutung, wenn Sie zwei verschiedene Klassen haben, die beide ein identisches Mitglied haben:

%Vor%

Aber A.i und B.i sind völlig verschiedene Felder, es gibt keine logische Beziehung zwischen ihnen. Auch wenn B von A oder umgekehrt erbt.

    
Henk Holterman 14.07.2009 14:14
quelle

Tags und Links