无法在 Web 中访问 Unity DependencyResolver API 2
Not Able to Access Unity DependencyResolver in Web API 2
我正在按照 this website 中描述的步骤设置 Unity 依赖解析器,以便将依赖注入到我的一个控制器中。此代码工作正常:
var container = new UnityContainer();
container.RegisterType<IUnitOfWork, UnitOfWork>(new HierarchicalLifetimeManager());
以上代码放在WebApiConfigRegister(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 class 实现了 IDependencyResolver 接口。
并添加 UnityResolver class
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();
}
}
我正在按照 this website 中描述的步骤设置 Unity 依赖解析器,以便将依赖注入到我的一个控制器中。此代码工作正常:
var container = new UnityContainer();
container.RegisterType<IUnitOfWork, UnitOfWork>(new HierarchicalLifetimeManager());
以上代码放在WebApiConfigRegister(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 class 实现了 IDependencyResolver 接口。
并添加 UnityResolver class
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();
}
}