C # Generika, Querverweis Klassen für Zustandsmuster

8

Ich versuche, in C # -Generika zu gelangen und habe eine Zustandsmaschine mit dem Zustandsmuster erzeugt, und jetzt versuche ich, umzuformen.

Ich habe einen Zustand, der einen Verweis auf das Objekt hat, an dem es arbeitet.

%Vor%

und ich habe das Objekt, das Zustände hat, das sollte einen Verweis auf seinen aktuellen Zustand haben.

%Vor%

Aber es funktioniert nicht ("der Typ kann nicht als Typparameter 't' im generischen Typ oder in der Methode verwendet werden").

Was ich erreichen möchte, ist etwa so:

%Vor%

Ist das möglich? Wenn es nicht so ist, gibt es einen anderen? Thx.

    
ElDuderino 13.06.2015, 10:36
quelle

1 Antwort

3

Sie können Interfaces und Varianz missbrauchen , um das zu erreichen:

%Vor%

Ob es tatsächlich eine gute Idee ist, ist zweifelhaft, solcher Code kann zu verwirrend sein.

Sie könnten auch mit dem einfacheren (aber weniger stark typisierten) Ansatz fortfahren:

%Vor%

Dies stellt nicht sicher, dass Sie keine PlayerState einem Monster zuweisen können. Sie sollten das zur Laufzeit überprüfen.

    
Lucas Trzesniewski 13.06.2015, 11:18
quelle

Tags und Links