Bon perso, le design de jeu (vu qu'a priori il s'agit de ça) j'y connais pas grand chose, mais j'ai souvent lu que le modèle OO ne collait pas génial (ça parle souvent d'ECS plutôt) du coup si ça se trouve t'as pas la bonne approche mais ça je ne saurais dire.
En attendant, tu dis vouloir créer une instance d'un type dérivé de Personnage, pourquoi tu te fais pas une méthode générique avec des contraintes sur ce paramètre générique ?
Schématiquement (flemme de tester dans l'idée
donc pas forcément 100% juste) un truc du genre
Personnage Create<T> () where T : Personnage, new() => Activator.CreateInstance<T> ();
À noter que si cette méthode est directement dans ta factory pas besoin de l'overrider derrière dans Batiment
1 2 3 4
| class Factory<T>
{
public T Create<U> where U : T, new() => Activator.CreateInstance<U> ();
} |
Je précise également que j'ajoute la contrainte new() à chaque fois qui indique que le type doit posséder un constructeur sans paramètre, ça permet à Activator.CreateInstance de créer l'objet en l'appelant
Partager