反射和自动生成的类型

bri*_*137 2 c# vb.net system.reflection yield-return

我有一个类使用"yield"返回语句的单个方法.将自动创建嵌套类型.使用设置为绑定标志的反射BindingFlags.DeclaredOnly,我得到这个输出:

//我班上的公共成员
Test.FileSystemObject..ctor
Test.FileSystemObject.GetFiles(DirectoryInfo目录)
Test.FileSystemObject.GetFiles(String path)

// Auto generated nested class.  
Test.FileSystemObject+<GetFiles>d__4..ctor  
Test.FileSystemObject+<GetFiles>d__4.<>3__directory  
Test.FileSystemObject+<GetFiles>d__4.<>4__this  
Test.FileSystemObject+<GetFiles>d__4.<directories>5__7  
Test.FileSystemObject+<GetFiles>d__4.<files>5__8  
Test.FileSystemObject+<GetFiles>d__4.<FSO>5__6  
Test.FileSystemObject+<GetFiles>d__4.<i>5__9  
Test.FileSystemObject+<GetFiles>d__4.<unprocessed>5__5  
Test.FileSystemObject+<GetFiles>d__4.directory
Run Code Online (Sandbox Code Playgroud)

如何确定返回的类型是否assembly.GetTypes(BindingsFlags)是这样的自动生成类型?我正在寻找一种简单的方法来排除这些.

Tho*_*que 6

您可以测试类型是否具有以下[CompilerGenerated]属性:

if (type.GetCustomAttribute(typeof(CompilerGeneratedAttribute), true) != null)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

或者,您可以检查名称是否包含在用户代码中无效的字符.