Как использовать DI в проекте api web asp.net, а не .net core - PullRequest
0 голосов
/ 24 февраля 2019

Следующая документация показывает, как настроить космонавта для основного проекта .net.

https://github.com/Elfocrash/Cosmonaut

Registering the CosmosStores in ServiceCollection for DI support

 var cosmosSettings = new CosmosStoreSettings("<<databaseName>>", "<<cosmosUri>>", "<<authkey>>");

serviceCollection.AddCosmosStore<Book>(cosmosSettings);

//or just by using the Action extension

serviceCollection.AddCosmosStore<Book>("<<databaseName>>", "<<cosmosUri>>", "<<authkey>>", settings =>
{
    settings.ConnectionPolicy = connectionPolicy;
    settings.DefaultCollectionThroughput = 5000;
    settings.IndexingPolicy = new IndexingPolicy(new RangeIndex(DataType.Number, -1),
        new RangeIndex(DataType.String, -1));
});

Как мне работать со старым проектом webpi?

1 Ответ

0 голосов
/ 24 февраля 2019

Web Api 2 не имеет встроенного внедрения зависимостей, вы можете использовать сторонние пакеты внедрения зависимостей, такие как Autofac и Ninject и т. Д., Или вы можете создать одноэлементный класс Cosmonaut для использования, если вы не хотите использовать зависимостьВнедрение вообще.

Примечание: Согласно их документам , экземпляр Cosmonaut должен использоваться как единичные экземпляры для объекта.

UPDATE

Реализация универсального класса Singleton, где 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;
        }
    }
}
...