我正在使用 LinFu 的动态代理向某些类添加一些建议。问题是代理对象只能拦截虚拟方法,并且将为非虚拟方法返回返回类型的默认值。
我可以根据类或其任何方法是否具有拦截属性来判断一个类是否被代理,例如 [Transaction]
是否可以编写一个 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
{
...
}
}
非常感谢。