roslyn试图建立一个param属性

时间:2015-11-20 13:02:08

标签: c# roslyn

我无法弄清楚使用的正确类型是什么。

我正在尝试使用提供的参数语法为文档构建/// <summary> /// Create a parameter element for the supplied parameter syntax. /// </summary> /// <param name="parameterSyntax">the parameter syntax.</param> /// <returns>the corresponding parameter XML entry.</returns> private XmlElementSyntax CreateParameter(ParameterSyntax parameterSyntax) { var identifier = SyntaxFactory.Identifier(parameterSyntax.Identifier.Text); var text = SyntaxFactory.XmlTextAttribute( SyntaxFactory.XmlName("name"), SyntaxFactory.Token(SyntaxKind.EqualsToken), SyntaxFactory.Token(SyntaxKind.DoubleQuoteToken), SyntaxFactory.TokenList(identifier), SyntaxFactory.Token(SyntaxKind.DoubleQuoteToken)); // THE PROBLEM IS HERE var list = SyntaxFactory.List<XmlNodeSyntax>(new XmlNodeSyntax[] { text }); return SyntaxFactory.XmlElement( SyntaxFactory.XmlElementStartTag(SyntaxFactory.XmlName("param")), list, SyntaxFactory.XmlElementEndTag(SyntaxFactory.XmlName("param"))); } 元素。

我使用了错误的类型,因为我无法编译。

  

错误CS0029无法隐式转换类型&#39; Microsoft.CodeAnalysis.CSharp.Syntax.XmlTextAttributeSyntax&#39; to&#39; Microsoft.CodeAnalysis.CSharp.Syntax.XmlNodeSyntax&#39;`

<tr data-href="<%= edit_patient_report_path(@patient, report) %>"></tr>

$(document).on('click', '#table-id tr', function() {
    var link = $(this).data('href');
     $.ajax({
         type: 'PUT',
         url: link
     });
});

1 个答案:

答案 0 :(得分:1)

您的xml属性应该是XmlElementStartTag的一部分,而不是元素内容的一部分。尝试这样的事情:

private XmlElementSyntax CreateParameter(ParameterSyntax parameterSyntax)
{
  var identifier = SyntaxFactory.Identifier(parameterSyntax.Identifier.Text);

  var attribute = SyntaxFactory.XmlNameAttribute(
      SyntaxFactory.XmlName("name"),
      SyntaxFactory.Token(SyntaxKind.DoubleQuoteToken),
      SyntaxFactory.IdentifierName(identifier),
      SyntaxFactory.Token(SyntaxKind.DoubleQuoteToken));

  var startTag = SyntaxFactory.XmlElementStartTag(SyntaxFactory.XmlName("param"))
    .WithAttributes(new SyntaxList<XmlAttributeSyntax>().Add(attribute));

  var endTag = SyntaxFactory.XmlElementEndTag(SyntaxFactory.XmlName("param"));

  return SyntaxFactory.XmlElement(startTag, new SyntaxList<XmlNodeSyntax>(), endTag)
                      .NormalizeWhitespace();
}