2010-10-08 15 views
5

¿Hay alguna manera de tener un método de extensión en el método? Un ejemplo de esto sería un método que toma algún objeto de usuario como parámetro y necesita hacer un control de seguridad si ese usuario puede usar ese método desde el principio del método. ¿Puede el método tener un método de extensión como "verificar si este usuario puede usarme" y devolver bool?método de extensión para un método C#

Gracias.

Respuesta

0

No estoy seguro de si he entendido bien su pregunta. Sin embargo, ¿qué pasa con esto:

public static void EnsureUserHasAccess(this object obj) 
{ 
    // check permissions, possibly depending on `obj`'s actual type 
} 

public static void DoSomething(this MyClass obj) 
{ 
    // permissions check 
    obj.EnsureUserHasAccess(); 

    // do something about `obj` 
    … 
} 

public static void DoSomethingElse(this MyDifferentClass obj) 
{ 
    // permissions check 
    obj.EnsureUserHasAccess(); 

    // do something about `obj` 
    … 
} 
0

Extension methods en C# no son extensiones de los métodos (no estoy seguro de entender lo que significa), pero los métodos que se extienden objetos/clases.

Si desea insertar el tipo de cheques que está describiendo en su código, puede consultar PostSharp y AOP.

0

Puede ir con la respuesta de madgnome, que se basa en la programación de aspecto (me alegro de ver que alguien usó eso en .net) o puede usar atributos y pegar algún código en cada método que debe protegerse.

Cuestiones relacionadas