Provisoirement, vous pouvez aussi ACHIVE ce throught il utilise des choses dans l'espace de noms System.Reflection.Emit et je crois qu'il est possible de fournir l'implémentation d'une méthode grâce à l'utilisation d'arborescences d'expression LINQ. Ce qui est plutôt drôle:
var assembly = AppDomain.CurrentDomain.DefineDynamicAssembly(new AssemblyName("TestAssembly"), AssemblyBuilderAccess.RunAndSave);
var mod = assembly.DefineDynamicModule("TestModule");
var type = mod.DefineType("TestType");
var method = type.DefineMethod("Increment", MethodAttributes.Public, typeof(int), Type.EmptyTypes);
Expression<Func<int, int>> inc = (a) => a + 1; // this is cool
inc.CompileToMethod(method);
Il peut sembler un peu intimidant au début, mais il y a des choses vraiment cool, et vous laisser le compilateur générer les choses difficiles, la mise en œuvre de la méthode. Mais vous ne pouvez pas vraiment créer des champs comme celui-ci, ça va nécessiter de l'IL. Ce qui est très amusant mais très fastidieux.
AVERTISSEMENT:
Je n'ai pas essayé d'exécuter le code ci-dessus. Mais je sais que ça se passe quelque chose comme ça, ça fait longtemps que j'ai fait quelque chose comme ça.
Pourriez-vous nous montrer ce que vous avez fait jusqu'à maintenant? – 48klocs
Cela ressemble beaucoup à une question de code-pour-moi ... – Dykam
Je voulais mettre "ce n'est pas des devoirs", mais je pensais que vous me donneriez le bénéfice du doute. J'ai déjà 27 ans. Ce n'est pas "code pour moi" question. Le problème auquel je fais face est vraiment beaucoup plus grand, mais je réduis le problème à la question simple ci-dessus. – zaidwaqi