Можно создать дубликат:
Why does my .NET Attribute not perform an action?C# выполнение кода пользовательских атрибутов
Привет,
Это может soundlike очень тупой вопрос, и я не знаю, что можно здесь, как и все учебные пособия «custom attribute» в сети почти одинаковы, и они не учитывают то, что я хочу делать. Я видел какой-то код там, где код написан внутри классов атрибутов, например: Logging with ASP.NET MVC Action Filters, и мне интересно, как этот код выполняется.
Если у меня есть, например, следующий код:
public class Test
{
[RestrictedAttribute("RegisteredMember")]
public void DoSomething()
{
//this code can only be executed if the logged-in user
//is a member of the RegisteredMember group
}
}
Затем пользовательский атрибут RestrictedAttribute будет что-то вроде этого:
[AttributeUsage(AttributeTargets.Method)]
public class RestrictedAttribute : System.Attribute
{
/// <summary>
/// Make this code restricted to users with a required role
/// </summary>
/// <param name="requiredRole">The role required to execute this method</param>
public RestrictedAttribute(string requiredRole)
{
//validate if member is in role, else throw exception
throw new MemberNotInRoleException(requiredRole);
}
public new string ToString() {
return "Access needs to be granted";
}
}
Теперь проблема заключается в том, что я не могу получить MemberNotInRoleException быть брошенным при выполнении метода Test.DoSomething().
Возможно, мне просто не хватает всей концепции пользовательских атрибутов, не стесняйтесь объяснять.
Dupe: http://stackoverflow.com/questions/1164978/c-attribute-actions-and-instance-values –
Вам нужно наследовать свой атрибут из ActionFilterAttribute и переопределить метод OnActionExecuting, чтобы заставить его что-то сделать в MVC , –
Я не думаю, что это точный обман, так как это поведение MCV, которое помутнение проблемы, ссылки на Mehrdad напрямую ссылаются на атрибуты, и это хороший вызов, но здесь есть нюанс, который может помочь людям MVC, проблемы в их решениях, такие как валидация и сериализация JSON/XML. –