Eventuali duplicati:
Why does my .NET Attribute not perform an action?C# eseguire codice all'interno attributo personalizzato
Ciao,
Questo può soundlike una domanda molto stupida e non so che cosa è possibile qui come tutti le esercitazioni "attributo personalizzato" sulla rete sono praticamente le stesse e non affrontano ciò che voglio fare. Ho visto del codice là fuori dove il codice è scritto all'interno delle classi di attributi, ad esempio: Logging with ASP.NET MVC Action Filters e mi chiedo come mai questo codice verrà mai eseguito.
Se ho ad esempio, il seguente codice:
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
}
}
Poi l'attributo personalizzato RestrictedAttribute sarebbe qualcosa di simile a questo:
[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";
}
}
Ora il problema è che non riesco a ottenere il MemberNotInRoleException da lanciare quando eseguo il metodo Test.DoSomething().
Forse mi manca solo l'intero concetto di attributi personalizzati, sentitevi liberi di spiegare.
Dupe: http://stackoverflow.com/questions/1164978/c-attribute-actions-and-instance-values –
È necessario ereditare l'attributo da ActionFilterAttribute e sovrascrivere il metodo OnActionExecuting per farlo eseguire in MVC . –
Non penso che questo sia un vero e proprio capriccio, dato che è il comportamento di MCV che sta annebbiando il problema, gli indirizzi di riferimento di Mehrdad attribuiscono direttamente ed è una buona chiamata, ma qui c'è una sfumatura che può aiutare gli MVC a cercare di affrontare il taglio trasversale preoccupazioni nelle loro soluzioni, come la convalida e la serializzazione JSON/XML. –