2014-02-17 70 views
0

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

+0

您可以从其他参考一个项目,如果这是你在问什么? – germi

+0

是的,我已经有了,但的WebAPI不会使用该ApiControllers其他项目。 – jfamvg

回答

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),新的 CustomAssemblyResolver());

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

+0

谢谢你的回应。是的,我也找到了,但我没有一个我使用的DLL。我使用了对其他项目的引用,所以我无法使用该LoadFrom函数。 – jfamvg

+0

我不知道我理解你 –

+0

使用此行:Assembly.LoadFrom(@“C:\ PATH_TO_MY_CONTROLLERS_ASSEMBLY”);你是否反映了一个dll。我没有dll,我添加了对我的其他解决方案项目(库)的参考。在那个库中我有我的ApiControllers,我想用这些控制器。 – jfamvg

相关问题