gpt4 book ai didi

c# - 反射和自动生成的类型

转载 作者:行者123 更新时间:2023-12-03 19:08:43 25 4
gpt4 key购买 nike

我有一个类只有一个方法,该方法使用“yield”返回语句。自动创建嵌套类型。使用反射并将绑定(bind)标志设置为 BindingFlags.DeclaredOnly,我得到以下输出:

// Public members from my class.
Test.FileSystemObject..ctor
Test.FileSystemObject.GetFiles(DirectoryInfo directory)
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

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

最佳答案

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

if (type.GetCustomAttribute(typeof(CompilerGeneratedAttribute), true) != null)
{
...
}

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

关于c# - 反射和自动生成的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16349560/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com