2010-04-16 5 views
2

J'utilise le proxy dynamique de LinFu pour ajouter quelques conseils à certaines classes. Le problème est que les objets mandatés ne peuvent intercepter que des méthodes virtuelles et retourneront la valeur par défaut du type de retour pour les méthodes non virtuelles.C#/Resharper 5 recherche structurelle, détecter et avertir si des méthodes publiques non virtuelles sur des classes avec certains attributs

Je peux dire si une classe est basée sur un proxy ou non basée si la classe ou l'une de ses méthodes a un attribut d'interception, par ex. [Transaction]

Est-il possible d'écrire une recherche structurelle ReSharper 5 qui avertirait si des méthodes publiques non virtuelles sont définies sur une classe avec un attribut d'interception.

E.g.

Ok

public class InterceptedClass 
{ 
    [Transaction] 
    public virtual void TransactionalMethod() 
    { 
     ... 
    } 

    public virtual void AnotherMethod() 
    { 
     ... 
    } 
} 

Bad

public class InterceptedClass 
{ 
    [Transaction] 
    public virtual void TransactionalMethod() 
    { 
     ... 
    } 

    public void AnotherMethod() // non-virtual method will not be called by proxy 
    { 
     ... 
    } 
} 

Merci beaucoup.

+1

OT, mais NDepend est assez chouette pour des choses comme ça :) –

Répondre

0

Ce n'est actuellement pas possible avec ReSharper 5, AFAIK. Nous améliorerons les motifs structurés en classe et en général au niveau de la conception dans l'une des prochaines versions. Merci, et gardez cet exemple à venir! Nous aurons besoin de beaucoup de cas :)

Questions connexes