2013-08-13 2 views
4

Я выполняю повторение методов в типе и должен переписать те, которые не являются статическими. Я должен вставить параметр либо в качестве первого или последнего параметра, но не могу понять, как создать объект ParameterSyntaxОбъявление метода перезаписи

Это то, что я до сих пор

var methods = from m in r.Members.OfType<MethodDeclarationSyntax>() 
       where !m.Modifiers.Contains(Syntax.Token(SyntaxKind.StaticKeyword)) 
       select new { 
        orgMethodDecl = m, 
        rewrittenDecl = RewriteMethodDeclaration(m,name)}; 

        var rewrittenType = r; 
        foreach(var m in methods){ 
         rewrittenType = rewrittenType.ReplaceNode(m.orgMethodDecl, m.rewrittenDecl); 
        } 

и RewriteMethodDeclaration является где у меня есть вопрос

MethodDeclarationSyntax RewriteMethodDeclaration(MethodDeclarationSyntax method, string name) 
    { 
     var p = Syntax.Parameter(); //type dynamic, name: name 
     var parameters = method.ParameterList.AddParameters(p); 
     return method.WithParameterList(parameters); 
    } 

ответ

1

Попробуйте это:

static MethodDeclarationSyntax 
    RewriteMethodDeclaration(MethodDeclarationSyntax method, string name) 
{ 
    var type = Syntax.ParseTypeName("dynamic"); 
    var identifier = Syntax.Identifier(String.Format(" {0}", name)); 
    var p = Syntax.Parameter(
     new SyntaxList<AttributeListSyntax>(), 
     new SyntaxTokenList(), 
     type, 
     identifier, 
     null); 
    var parameters = method.ParameterList.AddParameters(p); 
    return method.WithParameterList(parameters); 
}