は、あなたのCustomAuthorizeがMicrosoft.Practices.Unity.InterceptionExtension.HandlerAttributeから を継承し、 「ICallHandlerのcreateHandler(IUnityContainerコンテナ)」メソッドをオーバーライド属性にすることです。
public class CustomAuthorizeAttribute: HandlerAttribute
{
public IAuthorizeAttributeHandler AuthorizationHandler { get; set; }
public override ICallHandler CreateHandler(IUnityContainer container)
{
AuthorizationHandler= new AuthorizationAttributeHandler
{
DBContext = container.Resolve<IDBContext>()
};
return AuthorizationHandler;
}
}
は今Microsoft.Practices.Unity.InterceptionExtension.ICallHandlerから派生インターフェイスを作成し、メンバーとして、あなたのIDBContext を追加します。あなたの団結の構成に
public interface IAuthorizeAttributeHandler : ICallHandler
{
IDBContext DBContext;
}
IAuthorizationAttributeHandler実装
public class AuthorizationAttributeHandler : IAuthorizeAttributeHandler
{
public IDBContext DBContext
{
get; set;
}
public IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext)
{
var result = DBContext.DoWork(input.Arguments..);
//// Invoke the handler
IMethodReturn output = getNext()(input, getNext);
return getNext()(input, getNext);
}
}
シンプルな傍受の拡張子を追加します。
unityContainer
.AddNewExtension<Interception>()
.Configure<Interception>()
.SetInterceptorFor<IYourPageInterface>(new InterfaceInterceptor());
アスペクトを実行したいインターフェイスメソッドに属性を追加しました。
[CustomAuthorize]
ActionResult Index()
{
}
希望これは 乾杯 Rustin
を支援