使用反射查找具有特定属性的属性
自定义属性是在 .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中文网其他相关文章!