gpt4 book ai didi

c# - 无法访问 Web API 2 中的 Unity DependencyResolver

转载 作者:行者123 更新时间:2023-11-30 23:20:09 27 4
gpt4 key购买 nike

我正在遵循 this website 上描述的程序为了设置一个 Unity 依赖解析器以将依赖注入(inject)到我的 Controller 之一中。此代码运行良好:

var container = new UnityContainer();
container.RegisterType<IUnitOfWork, UnitOfWork>(new HierarchicalLifetimeManager());

上面的代码放在WebApiConfig Register(HttpConfiguration config)方法中。但是,说明还指定您必须使用此代码:

config.DependencyResolver = new DependencyResolver();

这就是问题所在:DependencyResolver() 在当前上下文中不存在。我尝试过搜索这个,我也尝试过 UnityDependencyResolver() ,它也不存在。我正在使用(或已经尝试使用)命名空间:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Web.Http;
using Microsoft.Owin.Security.OAuth;
using Microsoft.Practices.Unity;
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
using URLShortener.Models;
using Microsoft.Practices.Unity;
using System.Web.Http.Dependencies;

DependencyResolver 似乎不再存在,这让我感到困惑。谢谢。

最佳答案

instructions指定您应该使用此代码:

config.DependencyResolver = new UnityResolver(container);

UnityResolver 类实现 IDependencyResolver 接口(interface)。

并添加UnityResolver类

using Microsoft.Practices.Unity;
using System;
using System.Collections.Generic;
using System.Web.Http.Dependencies;

public class UnityResolver : IDependencyResolver
{
protected IUnityContainer container;

public UnityResolver(IUnityContainer container)
{
if (container == null)
{
throw new ArgumentNullException("container");
}
this.container = container;
}

public object GetService(Type serviceType)
{
try
{
return container.Resolve(serviceType);
}
catch (ResolutionFailedException)
{
return null;
}
}

public IEnumerable<object> GetServices(Type serviceType)
{
try
{
return container.ResolveAll(serviceType);
}
catch (ResolutionFailedException)
{
return new List<object>();
}
}

public IDependencyScope BeginScope()
{
var child = container.CreateChildContainer();
return new UnityResolver(child);
}

public void Dispose()
{
container.Dispose();
}
}

关于c# - 无法访问 Web API 2 中的 Unity DependencyResolver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39872046/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com