假设我的目标库(将注入代码的库)定义了一个接口:
interface ISomething<T> { }
我正在尝试按如下方式生成一个类声明:
class Test : ISomething<Test.Nested>
{
class Nested { }
}
我希望使用SyntaxFactorys来实现这一点,即尽可能避免自己创建(字符串)源代码。我该怎么做?
INamedTypeSymbol iSomethingType = FindInterface(); // assume this works
var nestedClass = SyntaxFactory.ClassDeclaration("Nested");
var outerClass = SyntaxFactory.ClassDeclaration("Test")
.AddMembers(nestedClass)
.AddBaseListTypes( /* whoops.. what now? */ );
但是,我不确定如何最好地掌握嵌套类的BaseTypeSyntax。
.AddBaseListTypes(SyntaxFactory.SimpleBaseType(SyntaxFactory.ParseTypeName($"iSomethingType.ToFullyQualifiedDisplayStringWithoutGenerics()<{FullyQualifiedNameOfNestedClass}>")))
但我不喜欢在这里自己生成类型字符串,这正是我试图避免的。