C# 如何在asp.net web api项目而不是.net core上使用DI
以下文档显示了如何为.net核心项目配置cosmonautC# 如何在asp.net web api项目而不是.net core上使用DI,c#,asp.net-web-api,webapi2,C#,Asp.net Web Api,Webapi2,以下文档显示了如何为.net核心项目配置cosmonaut 在ServiceCollection中注册CosmosStores以获得DI支持 var cosmosSettings=新的CosmosStoreSettings(“,”,“); serviceCollection.AddCosmosStore(cosmosSettings); //或者仅仅通过使用操作扩展 serviceCollection.AddCosmosStore(“,”,“,”,设置=> { settings.Connect
在ServiceCollection中注册CosmosStores以获得DI支持
var cosmosSettings=新的CosmosStoreSettings(“,”,“);
serviceCollection.AddCosmosStore(cosmosSettings);
//或者仅仅通过使用操作扩展
serviceCollection.AddCosmosStore(“,”,“,”,设置=>
{
settings.ConnectionPolicy=ConnectionPolicy;
settings.DefaultCollectionThroughput=5000;
settings.IndexingPolicy=新的IndexingPolicy(新的范围索引(DataType.Number,-1),
新的RangeIndex(DataType.String,-1));
});
如何处理旧的webpi项目?WebAPI 2没有现成的依赖注入,您可以使用第三方依赖注入包,如Autofac和Ninject等,或者如果您根本不想使用依赖注入,也可以创建Cosmonaut的singleton类 注:按照他们的标准,Cosmonaut实例应作为每个实体的单例实例使用 更新 通用单例类的实现,其中T是您请求实例的实体类型
public sealed class CosmosStoreSingleton<T>
{
private static ICosmosStore<T> instance = null;
public static ICosmosStore<T> Instance
{
get
{
if (instance==null)
{
var cosmosSettings = new CosmosStoreSettings("<<databaseName>>", "<<cosmosUri>>", "<<authkey>>");
instance = new CosmosStore<T>(cosmosSettings);
}
return instance;
}
}
}
公共密封类宇宙存储单体
{
私有静态ICOSMStore实例=null;
公共静态ICOSMStore实例
{
得到
{
if(实例==null)
{
var cosmosSettings=新的CosmosStoreSettings(“,”,“);
实例=新的CosmosStore(cosmosSettings);
}
返回实例;
}
}
}
Web Api 2没有现成的依赖项注入,您可以使用第三方依赖项注入包,如Autofac和Ninject等,或者如果您根本不想使用依赖项注入,也可以创建Cosmonaut的singleton类
注:按照他们的标准,Cosmonaut实例应作为每个实体的单例实例使用
更新
通用单例类的实现,其中T是您请求实例的实体类型
public sealed class CosmosStoreSingleton<T>
{
private static ICosmosStore<T> instance = null;
public static ICosmosStore<T> Instance
{
get
{
if (instance==null)
{
var cosmosSettings = new CosmosStoreSettings("<<databaseName>>", "<<cosmosUri>>", "<<authkey>>");
instance = new CosmosStore<T>(cosmosSettings);
}
return instance;
}
}
}
公共密封类宇宙存储单体
{
私有静态ICOSMStore实例=null;
公共静态ICOSMStore实例
{
得到
{
if(实例==null)
{
var cosmosSettings=新的CosmosStoreSettings(“,”,“);
实例=新的CosmosStore(cosmosSettings);
}
返回实例;
}
}
}
来自文档:来自文档:如果您想通过Autofac或自定义Singleton类解析它,我很乐意为您提供示例代码。您应该在创建Singleton实例时使用锁定。是的,当实例不是线程安全时,应该使用锁定,但是根据他们的文档,这个cosmos store实例似乎是线程安全的。如果您想通过Autofac或自定义Singleton类解析它,我很乐意为您提供示例代码。您应该在创建Singleton实例时使用锁定。是的,当实例不是线程安全的时候,应该使用锁定,但根据他们的文档,这个cosmos商店实例似乎是线程安全的。