2010-04-16 32 views
2

我正在使用LinFu的动态代理向某些类添加一些建议。问题是代理对象只能拦截虚拟方法,并会返回非虚拟方法的返回类型的默认值。C#/ resharper 5结构检索,检测并警告有特定属性的类的非虚拟公共方法

我可以判断一个类是否通过代理来判断该类或其任何方法是否具有拦截属性,例如, [事务]

是否有可能编写ReSharper 5结构搜索,如果在具有拦截属性的类上定义了任何非虚拟公共方法,就会发出警告。

例如

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

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

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

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

非常感谢。

+1

OT,但NDepend对于像这样的东西非常漂亮:) – 2010-04-18 19:00:52

回答

0

ReSharper 5,AFAIK目前无法使用。我们将改进结构化模式,并在下一个版本中改进设计级别。谢谢,并保持这个例子来!我们将需要很多情况:)