我可以在我的解决方案中使用库项目中的ApiControllers吗?

时间:2014-02-17 11:21:31

标签: c# asp.net-web-api

我在同一个项目中有两个解决方案,一个是完整的API,另一个是 一个(图书馆)与我的ApiControllers。有没有一种简单的方法在我的Web API项目中使用我的库中的ApiControllers?

1 个答案:

答案 0 :(得分:1)

是的,在Web API中,您可以通过提供自定义IAssembliesResolver来使用外部程序集中的控制器。

public class CustomAssemblyResolver : DefaultAssembliesResolver
{
    public override ICollection<Assembly> GetAssemblies()
    {
        var assemblies = base.GetAssemblies();
        var controllersAssembly = Assembly.LoadFrom(@"C:\PATH_TO_MY_CONTROLLERS_ASSEMBLY");
        assemblies.Add(controllersAssembly);

        return assemblies;
    }
}

或者如果您不想手动加载DLL

public class CustomAssemblyResolver : DefaultAssembliesResolver
{
    public override ICollection<Assembly> GetAssemblies()
    {
        var assemblies = base.GetAssemblies();
        var controllersAssembly = typeof(SomeTypeFromControllersLibrary).Assembly;
        assemblies.Add(controllersAssembly);

        return assemblies;
    }
}

然后,您必须针对HttpConfiguration

进行注册
  

httpConfiguration.Services.Replace(typeof(IAssembliesResolver),new   CustomAssemblyResolver());

更多信息: http://www.strathweb.com/2012/06/using-controllers-from-an-external-assembly-in-asp-net-web-api/