在实现自定义过滤器时,我目前正在使用一种模式,其中我的 DTO 都使用过滤器属性进行标记,并且还实现了一个自定义接口,该接口公开了一些我想在我的服务中使用的公共变量,例如:
public interface IMyInterface
{
Int32 MyVariable { get; set; }
}
[MyFilter]
public class MyDto
: IMyInterface
{
public Int32 MyVariable { get; set; }
}
public class MyFilterAttribute
: Attribute
, IHasRequestFilter
{
public int Priority { get { return 0; } }
public IHasRequestFilter Copy () { return this; }
public void RequestFilter(IHttpRequest req, IHttpResponse res, object requestDto)
{
var temp = requestDto as IMyInterface;
if( temp != null )
{
var x = [something from the request object...]
temp.MyVariable = x;
}
}
}
这是预期的模式吗?或者有没有办法只用界面来做到这一点?有没有办法为所有通过 AppHost 实现接口的 dto 注册过滤器?