我想在我的.net Web api项目中使用此nuget包: https://github.com/Elfocrash/Cosmonaut/tree/885a98151be242516ec57cd94da1747b72588788
这个想法是从4.6.1的.net Web api中使用该nuget软件包的,但是该软件包的目标是netstandard2。所以我无法安装nuget软件包。
最后,我下载了源代码并在.net 4.6.1中创建了一个新的类库,它可以完美编译。
然后,我从.net Web api添加了对该库的引用。
但是我在serviceCollection上遇到问题,因为那里不存在。 如何使用serviceCollection?
// [Authorize]
public class TenantController : ApiController
{
private CosmosStoreSettings cosmosSettings;
public TenantController()
{
cosmosSettings = new CosmosStoreSettings(ConfigurationManager.AppSettings["database"].ToString(),
ConfigurationManager.AppSettings["endpoint"].ToString(),
ConfigurationManager.AppSettings["authKey"].ToString());
serviceCollection.AddCosmosStore<Book>(cosmosSettings);
}
名称“ serviceCollection”在当前上下文中不存在
我确切地知道这意味着什么,但是我不确定如何在此项目上实施DI
答案 0 :(得分:3)
您正在使用的库使用Microsoft.Extensions.DependencyInjection
NuGet程序包,其中包含ASP.NET Core使用的依赖注入框架。尽管它不依赖于ASP.NET Core(甚至不依赖于.NET Core),但鉴于您使用的是ASP.NET Web API 2,我建议您保持简单,仅在ComosStore<T>
附近创建一个工厂:
public static class CosmosStoreFactory
{
private static CosmosStoreSettings _settings = new CosmosStoreSettings("<<databaseName>>", "<<cosmosUri>>", "<<authkey>>");
public static ICosmosStore<T> CreateForEntity<T>() where T: class
{
return new CosmosStore<T>(_settings);
}
}
答案 1 :(得分:1)
我已经通过 WebAPI2 ,Get the GITHUB code here!实现了依赖项注入 只需下载应用程序并查看代码即可。这是一个非常简单的CRUD应用程序。请浏览README.md文件。
有几个可用的依赖项注入容器: 我使用了团结。
添加团结的步骤。 1.将库 Unity.AspNet.WebAp 添加到您的应用程序。 2.UnityConfig.cs文件将添加到您的APP_START文件夹中。
然后按照我在示例应用程序中完成的代码进行操作。