问题。 是否可以根据我的自定义属性的给定实例CustomAttributeData来获取MyAttribute实例?或相反亦然?

为什么需要这个? MyAttribute实例包含我感兴趣的属性,而CustomAttributeData实例包含我感兴趣的实际构造函数参数。因此,我现在实现了双重工作:首先,通过调用获得MyAttribute实例

Attribute.GetCustomAttribute(property, typeof(MyAttribute)) as MyAttribute

,其次,通过调用获取CustomAttributeData的实例
CustomAttributeData.GetCustomAttributes(property)

并浏览此收藏集。

P. S. 我看过this question,但没有在此处找到所需的解决方案。

最佳答案

如果我正确理解了您的问题,则您已经有一个自定义属性MyAttributeInstance的实例,并且您希望以同一步骤获取该相同实例的CustomAttributeData。

由于您已经找到MyAttributeInstance,并且已附加到属性(或类,或...),因此,我假定您具有可用的属性。因此,这可能对您有用:

CustomAttributeData CAD = property.GetCustomAttributesData().First(x => x.AttributeType == MyAttributeInstance.GetType());

我认为这回答了您的实际问题。但是,我认为您的意图可能是实际上询问如何直接从属性获取CustomAttributeData。在这种情况下,请尝试以下操作:
CustomAttributeData CAD = property.GetCustomAttributesData().First(x => x.AttributeType == typeof(MyAttribute));

10-08 02:18