我想创建对&#34; System.IEquatable<MyType>
&#34;的引用,其中开放泛型类型可以通过typeof
到达,泛型参数只能作为文本。如何创建可用作字段类型等的正确NameSyntax
?
我们最近使用SF.ParseName
创建了QualifiedNameSyntax
(不是GenericNameSyntax
让我感到奇怪的事情)。但是,我认为这并不理想,因为我自己处理<
,>
和string.Join。
答案 0 :(得分:2)
如果您在工作区层中执行此操作,还可以使用SyntaxGenerator类型以与语言无关的方式执行此操作:
var generator = SyntaxGenerator.GetGenerator(document);
generator.QualifiedName(generator.IdentifierName("System"),
generator.GenericName(generator.IdentifierName("IEquatable"),
new [] { generator.IdentifierName("MyType") }));
这将生成System.IEquatable&lt;的MyType&GT;用于VB文档的C#和System.IEquatable(Of MyType)。
答案 1 :(得分:1)
您可以使用以下模式:
SF.GenericName(
SF.Identifier(@"IEquatable"))
.WithTypeArgumentList(
SF.TypeArgumentList(/.../))