如何通过反射检测C#中带file修饰符的文件作用域类?
关于C# 11文件作用域类型的反射检测问题
C# 11引入了新的file类型修饰符,我尝试通过反射检测这类非公共类型,但没找到理想方法——Type类没有对应的Is…方法来判断类型是否为文件作用域。
目前我发现文件作用域类具备这些特征:
- 非公共,即
Type.IsNotPublic == true - 非嵌套,即所有
Type.IsNested*相关属性均为false - 无特殊属性或基类等标识
- 运行时类型名格式大致为
$"<{filename}>{uniqueHexId}__{userTypeName}"
我据此写出正则表达式来识别:
[GeneratedRegex("^<[a-zA-Z_]+>[A-F0-9]+__.*$")] private static partial Regex FileScopeClassNameRegex()
我想确认是否遗漏了什么,或是当前Type模型确实缺乏检测该类作用域的方法?更明确地说:是否存在系统原生的方法检测C#中的文件作用域类?
我已在相关代码示例中做过测试。
内容的提问来源于stack exchange,提问作者Matt Stuvysant
相关产品推荐
相关产品推荐

