.NET Decompiler with support for PDB generation, ReadyToRun, Metadata (&more) - cross-platform!
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

32 lines
668 B

using Microsoft.CodeAnalysis;
namespace ICSharpCode.Decompiler.Generators;
public static class RoslynHelpers
{
public static IEnumerable<INamedTypeSymbol> GetTopLevelTypes(this IAssemblySymbol assembly)
{
foreach (var ns in TreeTraversal.PreOrder(assembly.GlobalNamespace, ns => ns.GetNamespaceMembers()))
{
foreach (var t in ns.GetTypeMembers())
{
yield return t;
}
}
}
public static bool IsDerivedFrom(this INamedTypeSymbol type, INamedTypeSymbol baseType)
{
INamedTypeSymbol? t = type;
while (t != null)
{
if (SymbolEqualityComparer.Default.Equals(t, baseType))
return true;
t = t.BaseType;
}
return false;
}
}