4
我似乎無法使用Roslyn的Compilation.GetTypeByMetaDataName()
方法檢索嵌套類。如何檢索具有完全限定名稱的嵌套類型?
例如:
var tree = CSharpSyntaxTree.ParseText(@"
using System;
namespace MyNamespace
{
public class MyClass
{
public class MyInnerClass
{
}
}
}
");
var Mscorlib = new MetadataFileReference(typeof(object).Assembly.Location);
var compilation = CSharpCompilation.Create("MyCompilation",
syntaxTrees: new[] { tree }, references: new[] { Mscorlib });
//Correctly retrieves outer type.
var outerClass = compilation.GetTypeByMetadataName("MyNamespace.MyClass");
//Cannot correctly retrieve inner type (returns null)
var innerClass = compilation.GetTypeByMetadataName("MyNamespace.MyClass.MyInnerClass");
是否可以使用他們的完全合格的名稱檢索嵌套類型?
我意識到一個解決方法是首先檢查包含的類型是否包含使用INamespaceorTypeSymbol.GetTypeMembers()
的任何類型,但我寧願不沿着該路徑走。我假設GetTypeByMetaDataName()
方法應該適用於嵌套或其他類型的任何類型。
這是正確的,適用。謝謝! – JoshVarty