niepewnie, można również achive to bezpo¶rednio używał rzeczy w System.Reflection.Emit namespace i uważam, że możliwe jest zapewnienie implementacji metody za pomocą drzew wyrażeń LINQ. Który jest rodzajem schludny:
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);
To może wyglądać nieco trudne na początku, ale to jest naprawdę fajne rzeczy, i niech kompilator generuje dysk rzeczy, wdrożenie metody. Ale naprawdę nie możesz stworzyć takich pól, to będzie wymagało trochę IL. To świetna zabawa, ale naprawdę żmudna praca.
ZASTRZEŻENIE:
nie próbowałem uruchomić powyższy kod. Ale wiem, że to coś takiego, minęło trochę czasu, odkąd zrobiłem coś takiego.
Czy możesz pokazać nam, co zrobiliście w tej pracy domowej? – 48klocs
Wygląda bardzo podobnie do pytania "kod-to-mi" ... – Dykam
Chciałem powiedzieć "to nie jest praca domowa", ale myślałem, że dasz mi korzyść z wątpliwości. Mam już 27 lat. To nie jest pytanie "skopiuj to dla mnie". Problem, który napotykam, jest naprawdę większy, ale ograniczam problem do prostego pytania powyżej. – zaidwaqi