2

カスタム フィルターを実装するとき、私は現在、DTO が filter 属性でタグ付けされ、サービスで使用したいいくつかの共通変数を公開するカスタム インターフェイスを実装するパターンを使用しています。次に例を示します。

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 経由でインターフェイスを実装するすべての dtos のフィルターを登録する方法はありますか?

4

1 に答える 1