从Attribute转到CustomAttributeData或向后

时间:2016-02-02 15:58:28

标签: c# reflection custom-attributes system.reflection

问题。有没有办法根据自定义属性的给定实例(例如CustomAttributeData)获取MyAttribute的实例?反之亦然?

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

获取MyAttribute的实例
Attribute.GetCustomAttribute(property, typeof(MyAttribute)) as MyAttribute

second ,通过调用

获取CustomAttributeData的实例
CustomAttributeData.GetCustomAttributes(property)

走过这个系列。

P上。 S。我看过this question,但没有在那里找到所需的解决方案。

1 个答案:

答案 0 :(得分:1)

如果我正确理解了您的问题,您已经拥有自定义属性MyAttributeInstance的实例,并且您希望获得同一实例的CustomAttributeData,最好是一步完成。

由于您已经找到MyAttributeInstance,并且附加到属性(或类或...),我将假设您拥有该属性。所以这可能可能为你工作:

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

我认为这可以回答你的实际问题。但是,我认为您的意图可能实际上已经问过如何直接从属性获取CustomAttributeData。在这种情况下试试这个:

CustomAttributeData CAD = property.GetCustomAttributesData().First(x => x.AttributeType == typeof(MyAttribute));