Ist es möglich, eine generische Klasse zu erstellen, die nur einen Typ akzeptiert, der eine bestimmte Eigenschaft besitzt?

7

Ich möchte eine Klasse "Indicator" erstellen, die "Control" ausnimmt und die Eigenschaft "Image" setzt.

Da Control keine Image-Eigenschaft besitzt, Ich möchte eine Template-Klasse implementieren ("Indicator") , die nur Klassen akzeptiert, die eine bestimmte Eigenschaft haben (Bild).

Ist es möglich?

    
Amit Lipman 29.12.2015, 11:03
quelle

3 Antworten

17

Nun können Sie einschränken, wie Ihre Klasse instanziiert werden kann und in ihrem Hauptfenster nach dem Namen und Typ der Eigenschaft suchen:

%Vor%     
Fabjan 29.12.2015, 11:10
quelle
4

Sie können reflection verwenden, um die Eigenschaft Ihres Objekts zu erhalten:

%Vor%

Beachten Sie, dass in diesem Code davon ausgegangen wird, dass Image eine Zeichenfolge (Pfad zu einem Bild) ist. Sie können den Typ gemäß Ihren Anforderungen ändern. Es ist nur ein Beispiel.

    
Yeldar Kurmangaliyev 29.12.2015 11:12
quelle
0

Aufbauend auf @ Fabjans Antwort können Sie anstelle der Reflektion die Typprüfung durchführen, die erforderlich ist, um die Eigenschaft Image jedes Mal zu identifizieren, wenn Sie Instanzen des Objekts instanziieren Überprüfen Sie nur, ob der -Typ selbst instanziiert wird:

%Vor%     
AGB 21.01.2016 14:56
quelle

Tags und Links