Cet article présente principalement le code simple d'utilisation d'ILGenerator pour générer dynamiquement des fonctions en C#. Les amis qui en ont besoin peuvent s'y référer
Il y a toujours beaucoup de fichiers de configuration dans le serveur de jeu qui doivent l'être. lu, et ces fichiers de configuration Lecture : * Sinon, il sera transformé en un type faible, qui n'est qu'un tas de chaînes ou de chiffres, et l'erreur ne sera pas visible (elle doit être vérifiée à nouveau) * Sinon, ce sera transformé en un type fort, et chaque type doit être analysé par lui-même
Je préfère personnellement ce dernier, car l'ancien code LoadConfig est simple, mais le code n'est pas simple lors de l'écriture de la logique.
class Config1 : public IConfig { public void Fill(EntryLine& line); int32_t param1; string param2; std::vector<int32_t> param3; }; void Config1::Fill(EntryLine& line) { this->param1 = line.ReadInt32(); this->param2 = line.ReadString(); this->param3 = line.ReadVectorInt32(); }
La fonction de remplissage approximative est Comme écrit ci-dessus, c'est juste que des fonctions comme ReadInt32 sont fictives et doivent être implémentées par vous-même (hum)
Ensuite, ce genre de le code est très ennuyeux à écrire, et je n'ai pas vraiment envie de l'écrire. C'est la raison de cet article .
Il y a la désérialisation XML en C#. >
class Config1 { int32 param1; string param2; int[] param3; } XmlSerializer serializer = new XmlSerializer(typeof(Config1)); var obj = (Config1)serializer.Deserialize(stream);
Merci à Microsoft d'avoir fourni le débogage .NET La fonction de Framework me permet de déboguer le code source .NET et de voir comment Microsoft l'implémente
Après. quelques recherches, j'ai découvert qu'il avait en fait analysé Config1 lorsque XmlSerializer a été construit, puis généré des métadonnées et des méthodes Read/Write, Deserialize appelle simplement la méthode Read.
Maintenant que vous savez comment elle est implémentée, je Je pense que vous pouvez le comprendre après l'avoir étudié pendant un moment.
En gros, vous devez d'abord créer un prototype, puis programmer le prototype.
PS : je n'ai pas testé le performances encore, donc ça ne devrait pas être trop mal. Le pire est que le démarrage du serveur est quelques secondes plus lent.
XmlSerializationReaderILGen.cs
Résumé
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!