xparet0209
Ensign
- Registriert
- Okt. 2007
- Beiträge
- 180
Hi Cb'ler
ich habe folgenden Java-Quellcode, den ich in C# übersetzen möchte:
Das heißt ich habe einen Clienten, der eine Logik zugewiesen bekommen soll, duch
Eine solche Logik muss im enum von der LogikFactory angegeben sein und vom IGameHandler
erben. Mein Problem ist nun, wie übersetze ich
in C#? Die enums kann ich ja umschreiben in folgendes: (glaube ich)
Doch ich kann kein Objekt erstellen, von dessen Typ ich nur weiß dass sie vom IGameHandler erbt.
Kennt ihr vllt einen Weg das in C# auszudrücken?
mfg xparet0209
ich habe folgenden Java-Quellcode, den ich in C# übersetzen möchte:
PHP:
/**
* Erlaubt es verschiedene Logiken zu verwenden und eine davon auszuwählen und
* Instanzen dieser Logik zu erzeugen
*
* @author and
*/
public enum LogicFactory {
// Verfügbare Taktiken (Implementierungen des IGameHandler) müssen hier
// eingetragen wie im Beispiel eingetragen und ihre Klasse angegeben werden
RANDOM(RandomLogic.class),
TEST(TestLogic).class,
// Die Logik die gewählt wird, wenn kein passender Eintrag zu der Eingabe
// gefunden wurde:
DEFAULT(RandomLogic.class);
private Class<? extends IGameHandler> logic;
private LogicFactory(Class<? extends IGameHandler> chosenLogic) {
logic = chosenLogic;
}
/**
* Erstellt eine Logik-Instanz und gibt diese zurück
*
* @param client
* Der aktuelle Client
* @return Eine Instanz der gewaehlten Logik
* @throws Exception
* Wenn etwas schief gelaufen ist und keine Instanz erstellt
* werden konnte, wird eine Exception geworfen!
*/
public IGameHandler getInstance(AbstractClient client) throws Exception {
System.out.println("Erzeuge Instanz von: " + name());
return (IGameHandler) logic.getConstructor(client.getClass()).newInstance(client);
}
}
PHP:
logic = LogicFactory.valueOf("RANDOM").getInstance(client);
erben. Mein Problem ist nun, wie übersetze ich
PHP:
Class<? extends IGameHandler
PHP:
public enum LogicFactory {
RANDOM=RandomLogic,
TEST = TestLogic,
DEFAULT=RandomLogic
}
Kennt ihr vllt einen Weg das in C# auszudrücken?
mfg xparet0209
Zuletzt bearbeitet: