Décoration d'objets en c#
Bonsoir,
je souhaite ajouter de nouveaux composants à un objet en fonction de son patron de conception.
Diagramme simplifié (des prop et méthodes en moins ainsi que des classes dérivées d'ActorMod réduites à une seule pour que cela reste lisible) :
http://i.imgur.com/0r597NF.png
- une classe ActorManager qui gere des instances d'Actor.
- une classe Actor qui représente un objet Actor lui meme défini par un template représenté sous la forme d'une classe que j'appellerais ActorDefinition. (en fonction du template, certains champs / props sont modifiés dans la classe Actor, non visible dans ce diagramme simplifié)
- une classe ActorMod qui me sert de composant primaire et qui contient des méthodes dont certaines virtual. (exemple OnActorCreated(Actor actor) )
- des classes dérivées d'ActorMod instanciées selon certaines spécificité du template.
Concernant mes deux méthodes pour rechercher un composant précis de l'objet :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| public T GetComponent<T>()
{
return GetComponentInternal(typeof(T));
}
private dynamic GetComponentInternal(Type type)
{
foreach (var mod in ActorMods)
{
if (mod.GetType() == type) return mod;
}
return null;
} |
A vrai dire, cela ne me parait pas très propre, j'ai l'impression que le corps de ma fonction GetComponentInternal est mal défini et le mot clé dynamic me gene dans cette situation (peut etre lié au fait que c'est l'une des rares fois que je l'utilise depuis mes premiers pas sur c#) mais je n'ai pas trouvé d'autres solutions. Auriez vous mieux à proposer concernant les méthodes de récupération d'un composant de mon objet ?