1
System.Reflection을 사용하면 어셈블리의 다양한 유형을 모두 탐색하고 구성원, 속성 등을 자세히 조사 할 수 있습니다. Roslyn에서이 작업을 수행하는 데 필적 할만한 API는 무엇입니까?Roslyn에서 System.Reflection과 같은 API를 탐색하는 방법은 무엇입니까?
System.Reflection을 사용하면 어셈블리의 다양한 유형을 모두 탐색하고 구성원, 속성 등을 자세히 조사 할 수 있습니다. Roslyn에서이 작업을 수행하는 데 필적 할만한 API는 무엇입니까?Roslyn에서 System.Reflection과 같은 API를 탐색하는 방법은 무엇입니까?
FAQ에는 도움이되는 Roslyn 스 니펫이 있습니다. 질문에 대한
:어떻게 어셈블리의 모든 심볼 (또는 참조 된 모든 어셈블리)
다음이 제공받을 수 있나요. 컴파일로 참조되는 모든 어셈블리에서 모든 네임 스페이스, 유형, 필드 및 메서드를 인쇄합니다. 이것은 당신을위한 좋은 출발점으로 행동해야합니다.
var compilation = ... //Get a compilation
var results = new StringBuilder();
// Traverse the symbol tree to find all namespaces, types, methods and fields.
foreach (NamespaceSymbol ns in compilation.GetReferencedAssemblySymbol(mscorlib).GlobalNamespace.GetNamespaceMembers())
{
results.AppendLine();
results.Append(ns.Kind);
results.Append(": ");
results.Append(ns.Name);
foreach (var type in ns.GetTypeMembers())
{
results.AppendLine();
results.Append(" ");
results.Append(type.TypeKind);
results.Append(": ");
results.Append(type.Name);
foreach (var member in type.GetMembers())
{
results.AppendLine();
results.Append(" ");
if (member.Kind == SymbolKind.Field || member.Kind == SymbolKind.Method)
{
results.Append(member.Kind);
results.Append(": ");
results.Append(member.Name);
}
}
}
}
왜 downvote? – ChaseMedallion
당신이 시도한 것을 지정했다면 다른 사람들에게 유용 할 것이라고 생각합니다. – JoshVarty