Zaghaft, können Sie auch diese Throught achive er verwenden von Dingen im Namespace System.Reflection.Emit und ich glaube, dass es möglich ist, die Implementierung einer Methode durch die Verwendung von LINQ-Ausdrucksbäumen bereitzustellen. Welche ist eine Art ordentlich:
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);
Es könnte ein bisschen auf den ersten entmutigend aussehen, aber es ist wirklich coole Sachen, und Sie lassen den Compiler die harten Sachen, die Methode Implementierung generieren. Aber Sie können Felder wie dieses nicht wirklich erstellen, das erfordert etwas IL. Was sehr viel Spaß macht, aber wirklich mühsame Arbeit.
HAFTUNGSAUSSCHLUSS:
ich nicht den obigen Code auszuführen versucht. Aber ich weiß, es geht so, es ist schon eine Weile her, seit ich so etwas gemacht habe.
Können Sie uns zeigen, was Sie bisher bei dieser Hausaufgabe gemacht haben? – 48klocs
Sieht sehr nach einer Code-für-mich-Frage aus ... – Dykam
Ich wollte sagen "das ist keine Hausaufgabe", aber ich dachte, ihr würdet mir den Vorteil des Zweifels geben. Ich bin schon 27 Jahre alt. Es ist nicht "Code für mich" Frage. Das Problem, dem ich gegenüberstehe, ist wirklich viel größer, aber ich reduziere das Problem auf die einfache Frage oben. – zaidwaqi