私のアプリケーションでは、構造マップを次のように構成しました
public class DefaultRegistry : Registry {
#region Constructors and Destructors
public DefaultRegistry() {
Scan(
scan => {
scan.Assembly("Eterp.Data.ErpCore");
scan.Assembly("Eterp.Data.Seed");
scan.Assembly("Eterp.Application.ErpCore");
scan.TheCallingAssembly();
scan.WithDefaultConventions();
});
ForConcreteType<AclAuthorizationManager>().Configure.Ctor<IResourceOperationAppService>()
}
#endregion
}
そして、私にはクラスがあります
public class AclAuthorizationManager : ClaimsAuthorizationManager
{
private readonly IResourceOperationAppService _resourceOperationAppService;
public AclAuthorizationManager(IResourceOperationAppService resourceOperationAppService)
{
_resourceOperationAppService = resourceOperationAppService;
}
public override bool CheckAccess(AuthorizationContext context)
{
var isCurrentUserAuthorized = context.Principal.Identity.IsAuthenticated;
return isCurrentUserAuthorized && _resourceOperationAppService.CanAccessResource(context.Action.FirstOrDefault().Value, context.Principal.Claims);
}
}
このクラスは、アプリケーションで使用するカスタム クレーム承認クラスですが、アプリケーションを実行すると、コンストラクターに必要なパラメーターが不足していることに関連するエラーが発生します (このクラスには、パラメーター タイプ IResourceOperation のコンストラクターがあります)。しかし、私はすでにすべての詳細を structureMap に設定しています。この AclAuthorizationManager クラスの作成を期待して、私の構造マップ構成が 100% うまく機能していると確信しています。なぜなら、他のクラスで DI を適用できるからです。
私のコードの間違った部分は何ですか?