Я понимаю, что это старый вопрос. Наткнувшись на ту же самую проблему сегодня, ни одно из предложенных здесь решений не сработало. Особенно видно, как предложено решение Attribute.GetCustomAttributes(typeof(XmlAttribute),false)
генерирует исключение, потому что XmlAttribute не является производным от System.Attribute. Вместо этого вы должны проверить на XmlAttributeAttribute
.
Для дальнейшего использования это правильный и рабочий способ проверки XmlAttribute с использованием отражения:
PropertyInfo[] objProperties = obj.GetProperties();
foreach (var prop in objProperties)
{
Attribute[] propXmlAttr = Attribute.GetCustomAttributes(prop, typeof(XmlAttributeAttribute), false);
if (propXmlAttr.Length > 0)
string myAttribute = propValue.ToString());
}