首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Unity将存储库注入ServiceAuthorizationManager

使用Unity将存储库注入ServiceAuthorizationManager
EN

Stack Overflow用户
提问于 2012-06-25 23:43:31
回答 1查看 634关注 0票数 2

我想向ServiceAuthorizationManager实现注入一个存储库(使用unity)。有可能吗?

代码语言:javascript
运行
复制
 public class APIKeyAuthorization : ServiceAuthorizationManager
    {


        private readonly IKeysService _keysService;

        public APIKeyAuthorization(KeysService keysService)
        {
            _keysService = keysService;
        }

        protected override bool CheckAccessCore(OperationContext operationContext)
        {
            //var _keysService = new KeysService();


            string key = GetAPIKey(operationContext);

            string endpoint = GetEndpoint(operationContext); //ip address

            if (_keysService.IsValidKey(key, endpoint))
            {
                return true;
            }
            else
            {
                // Send back an HTML reply
                CreateErrorReply(operationContext, key);
                return false;
            }
        }
EN

回答 1

Stack Overflow用户

发布于 2012-06-26 00:28:26

您不必在容器中注册APIKeyAuthorization。Unity可以自己很好地解决具体的类。如果希望将APIKeyAuthorization作为ServiceAuthorizationManager的另一个实现注入,则必须向容器注册该映射

代码语言:javascript
运行
复制
container.RegisterType<ServiceAuthorizationManager, APIKeyAuthorization>();

Unity将把已注册的IKeyService实现(在您的例子中是KeyService的实例)注入到APIAuthorization的构造函数中。

试一试

代码语言:javascript
运行
复制
APIAuthorization auth = container.Resolve<APIAuthorization>();

您将看到Unity为您解析IKeyService

但请不要对abuse Unity as a ServiceLocator犯这个错误。

相反,在composition root of your application中连接容器并仅解析来自容器的顶级对象。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11192610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档