Атрибут C #: как узнать имя класса с полем, помеченным атрибутом - PullRequest
0 голосов
/ 22 августа 2010

особенно при переопределении Asp.net MVC ValidationAttribute, возможно ли узнать имя класса, у которого поле помечено атрибутом?(AttributeUsage - это AttributeTargets.Property)

public class UniqueAttribute: ValidationAttribute

        public override bool IsValid(object value)
        {
            // how to know which class has this attribute?
        }

Ответы [ 2 ]

1 голос
/ 22 августа 2010

Учитывая экземпляр атрибута, невозможно определить, из какого класса, поля, метода и т. Д. ... возник этот атрибут.Прежде всего потому, что к нему не нужно привязываться.Все атрибуты могут быть созданы так же, как обычный объект, и, следовательно, ни к чему не могут быть присоединеныпервое место.

Можно пойти и другим путем.По заданному члену или типу выяснить, применяется ли к нему данный атрибут.Например, предполагая, что к типу SomeType подключен единственный экземпляр UnqiueAttribute, этот код будет его извлекать.

var type = typeof(SomeType);
var attrib = (UniqueAtrtibute)type.GetCustomAttributes(typeof(UnqiueAttribute),true)[0];
0 голосов
/ 23 августа 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...