Я создаю код с помощью CodeDom.Однако CodeDom не поддерживает лямбда-операторы.Поэтому я сейчас пытаюсь имитировать лямбда-оператор, создавая локальный метод и передавая метод в качестве параметра другому методу.Примерно так:
public string MainMethod(string myParameter)
{
string g() { return instance.MainMethod(myParameter); }
return someOtherMethod(g);
}
Метод 'MainMethod' уже создан с использованием CodeDom, и я пытаюсь получить локальный метод там.Тем не менее, я не могу найти способ сделать это до этого момента.Я мог бы использовать некоторую помощь с этим.
Я уже пытался добавить CodeMemberMethod к CodeMemberMethod, но, кажется, нет никакого способа сделать это.Кажется, я не могу найти никаких альтернатив.
В настоящее время мой код CodeDom использует MethodInfo в качестве основы:
var method = new CodeMemberMethod();
method.Name = methodInfo.Name;
method.ReturnType = new CodeTypeReference(methodInfo.ReturnType);
//left out parameter stuff
var gMethod = new CodeMemberMethod() { Name = "g", ReturnType = new CodeTypeReference(methodInfo.ReturnType) };
gMethod.Statements.Add(new CodeMethodReturnStatement(new CodeMethodInvokeExpression(new CodeMethodReferenceExpression(new CodeVariableReferenceExpression("instance"), methodInfo.Name), parameterReferences.ToArray())));
method.Statements.Add(gMethod);
Теперь, боль в последнем утверждении.Я на самом деле пытаюсь добавить CodeMemberMethod к CodeMemberMethod, что не разрешено через свойство Statements.Есть ли способ сделать это по-другому?