bouh2 a dit : "Désolé de remonter ce vieux topic mais je me dois d'intervenir et briser un mythe car non je ne suis pas une fille, désolé messieurs !"
Le jour de noel, quel cadeau, et quel mythe brisé..
Sinon Stump utilise en effet la reflection pour ajouter un id de message (key) et une délégué de methode (qui correspond au handler) (Value) lors de l'initialisation de l'émulateur afin de pouvoir géré chaques packets a la main..
En résumé (tres tres gros résumé, un truc comme ça):
public static Dictionary<int,Delegate> Handlers = new Dictionarry<int,Delegate>();
public static void Initialize()
{
foreach (var type in Assembly.GetType())
{
foreach (MethodInfo method in type.GetMethods())
{
var attribute = method.GetCustomAttribute(typeof(MONATTRIBUT)))
if (attribute != null)
{
Handlers.Add(attribute.MessageId,method.CreateDelegate());
}
}
}
}
Pour gérer un message, il deserialize le message afin d'obtenir l'id et appelle le delegué de l'handler correspondant a ce message