using Prism.Ioc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http.Controllers;
using System.Web.Http.Dependencies;
namespace LocalhostMES.Infrastructure
{
///
/// Web API 与 Prism 容器桥接(需要时可在此扩展从容器解析的类型)。
///
public class PrismDependencyResolver : IDependencyResolver
{
private readonly IContainerProvider _containerProvider;
public PrismDependencyResolver(IContainerProvider containerProvider)
{
_containerProvider = containerProvider;
}
public IDependencyScope BeginScope()
{
return this;
}
public object GetService(Type serviceType)
{
try
{
if (typeof(IHttpController).IsAssignableFrom(serviceType))
{
return _containerProvider.Resolve(serviceType);
}
if (IsRegisteredCustomType(serviceType))
{
return _containerProvider.Resolve(serviceType);
}
return null;
}
catch (ContainerResolutionException)
{
return null;
}
catch
{
return null;
}
}
private static bool IsRegisteredCustomType(Type serviceType)
{
// 当前控制器均使用无参构造;若后续有需注入单例,在此按类型或命名空间登记。
return false;
}
public IEnumerable