2014-02-17 100 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

相關問題