Если вы ищете только то, какие атрибуты украшают определенное свойство, вам нужно будет вызвать GetProperties
для вашего типа вместо GetFields
, как вы в настоящее время.Это потому, что ваши атрибуты украшают свойства, а не поля.GetFields
вернет сгенерированные компилятором поля поддержки, что, вероятно, не то, что вам нужно.Вы все еще можете выполнить сравнение значений таким же образом.
Теперь, чтобы проверить атрибуты, каждый объект PropertyInfo
в массиве, возвращаемый GetProperties
, будет иметь свойство массива CustomAttributes
, которое содержит деталииз атрибутов украшения этого свойства и любых аргументов, которые вы предоставили этим атрибутам.Если вы просто хотите проверить наличие атрибута и не заботитесь об аргументах, решение Magnus достигает того же и быстрее.
(я также упомяну это в вашем примере кода, используя Name.Contains
будет означать, что, например, ClientId
будет пропущено, поскольку его имя содержит Id
, которое вы указываете как исключенное поле. Name
для объявленных вами свойств просто вернет имя как объявленное, чтобы вы моглипросто проверьте на равенство.)