gpt4 book ai didi

c# - 为什么 Attributes.IsDefined() 缺少重载?

转载 作者:IT王子 更新时间:2023-10-29 03:30:50 24 4
gpt4 key购买 nike

受到 SO 问题的启发。 Attribute 类有几个重载 IsDefined()方法。涵盖的是应用于 Assembly、Module、MemberInfo、ParameterInfo 的属性。 MemberInfo 重载涵盖 PropertyInfo、FieldInfo、EventInfo、MethodInfo、ConstructorInfo。

这会处理大部分 AttributeTargets。除了一个大问题:Attribute.IsDefined(Type, Type) 没有重载,因此您可以检查是否在类上定义了属性。或与此相关的结构、委托(delegate)或枚举。

这并不是一个真正的问题,Type.GetCustomAttributes() 可以解决这个问题。但是所有的 BlahInfo 类型也都有这个。我想知道缺乏对称性。我不知道为什么这对 Type 来说是个问题。猜测继承问题并不能向我解释。混合使用 ValueType 可能是一个领先优势,但仍然没有意义。我不买“他们忘记了”,他们从来不买。

为什么缺少这个重载?

最佳答案

有一个 System.Attribute.IsDefined(MemberInfo element, Type attributeType, bool inherit)System.Type 派生自 System.Reflection.MemberInfo.

程序集是任何 .NET 程序集的顶级容器,具有一个或多个模块。然后每个模块都包含类型,并且类型可以具有属性、方法甚至其他类型(嵌套类型)等成员。这就是 System.Type 派生自 MemberInfo 的原因,因此对象模型允许类型作为所有成员的容器,包括其他类型。

关于c# - 为什么 Attributes.IsDefined() 缺少重载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3026405/

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