Ориентировочно, вы можете также achive этих Повсеместно он использует вещей в пространстве имен System.Reflection.Emit, и я считаю, что можно обеспечить реализацию метода с помощью деревьев выражений LINQ. Какой вид аккуратный:
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);
Это может выглядеть немного сложной на первый, но это действительно интересный материал, и вы позволить компилятору генерировать жесткий материал, реализацию метода. Но вы не можете создавать такие поля, как это, это потребует некоторого ИЛ. Это очень весело, но очень утомительная работа.
ОТКАЗ:
Я не пытался запустить код выше. Но я знаю, что это похоже на то, что прошло какое-то время, так как я сделал что-то подобное.
Не могли бы вы показать нам, что вы сделали в этом задании на домашнее задание? – 48klocs
Очень похож на вопрос «Код для меня» ... – Dykam
Я хотел поставить «это не домашнее задание», но я думал, что вы, ребята, дадите мне возможность сомневаться. Мне уже 27 лет. Это не вопрос «code it for me». Проблема, с которой я сталкиваюсь, действительно намного больше, но я уменьшаю проблему до простого вопроса выше. – zaidwaqi