首页 > 后端开发 > C++ > 如何在 C# 中高效查找具有特定自定义属性的公共属性?

如何在 C# 中高效查找具有特定自定义属性的公共属性?

DDD
发布: 2025-01-05 02:37:38
原创
945 人浏览过

How Can I Efficiently Find Public Properties with a Specific Custom Attribute in C#?

使用反射查找具有特定属性的属性

自定义属性是在 .NET 代码中注释类型和成员的强大工具。有时有必要以编程方式检索有关这些属性的信息。此问题重点在于检索由名为 MyAttribute 的特定自定义属性赋予的公共属性列表,该属性的 AllowMultiple 属性设置为 false。

提供的代码使用循环来迭代该类型的属性并使用 GetCustomAttributes() 检查自定义属性是否存在。虽然这种方法很实用,但它涉及具体化属性实例,这会带来性能成本。

更有效的方法是在 GetProperties() 集合上使用Where() 扩展方法,如给定中所示答案:

var props = t.GetProperties().Where(
    prop => Attribute.IsDefined(prop, typeof(MyAttribute)));
登录后复制

此代码利用 Attribute.IsDefined() 方法,该方法检查成员上是否存在特定属性类型,而不创建任何属性实例。 lambda 表达式确保只有具有 MyAttribute 的属性才会被选择到 props 变量中。

利用此方法可以避免与具体化属性实例相关的开销,从而获得更轻量级和高性能的解决方案。

以上是如何在 C# 中高效查找具有特定自定义属性的公共属性?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板