0

プロパティインジェクションとコンストラクターインジェクションを使用する必要があるMVC属性があります。構造マップを使用して、xml構成を介してインジェクションを実行しています。プロパティが設定されることはありません、誰かが私が間違っていることを見ますか?ありがとう

 public class RequirePermissionAttribute: AuthorizeAttribute, IAuthorizationFilter
{
    #region Fields

    private readonly IPermissionService _permissionService;

    #endregion

    #region Properties

    [SetterProperty]
    public IPermissionService PermissionService
    {
        get
        { 
            return _permissionService; 
        }
        set
        {
            value = _permissionService;
        }
    }

...。

構成ファイル

<DefaultInstance PluggedType="Service.Permissions.PermissionService,Service" PluginType="Service.Permissions.IPermissionService,Service" Scope="HttpContext" />
4

1 に答える 1

1

RequirePermissionAttribute それはStructureMapによって解決されないので、プロパティを設定できると思います。属性はコンパイル時であるため、これを有効にするには追加の手順を実行する必要があります。

ControllerFactoryとDependencyResolverのどちらを使用してDIを有効にしているかはわかりませんが、ControllerFactoryを使用してActionInvokerプロパティの実装を提供していました。

you can find some informations here : http://www.jeremyskinner.co.uk/2008/11/08/dependency-injection-with-aspnet-mvc-action-filters/. It's old but still applicable.

于 2012-04-20T16:40:15.780 に答える