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