powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / How to resolve this DI
13 сообщений из 13, страница 1 из 1
How to resolve this DI
    #39939209
RegisteredUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
как мне разрезолвить этот DI в методе TestMethod()?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
// ДАНО
// есть исходный репозиторий вида
using EasyCaching.Core;

        public class CacheRepository : ICacheRepository
        {
            IEasyCachingProviderFactory _factory;
            IDBCommander _dbCommander;
            IGateService _gate;


            public CacheRepository(IEasyCachingProviderFactory factory, IDBCommander dbCommander, IGateService gate)
            {
                _factory = factory;
                _dbCommander = dbCommander;
                _gate = gate;
            }

            IEasyCachingProvider GetProvider(string name = "default")
            {
                return _factory.GetCachingProvider(name);
            }
		// ................
        }


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
	// конструктор в другом проекте
        public TestСlass()
        {
		// ................
            _services.AddSingleton<IGateService, GateService>();
            _services.AddSingleton<ICacheRepository, CacheRepository>();            
            _services.AddSingleton<IDBCommander, DBCommander>();
		// ................
	}

	// метод в другом проекте
        public void  TestMethod()
        {
            var commander = _serviceProvider.GetService<IDBCommander>();
            var gate = _serviceProvider.GetService<IGateService>();
            var repoStatuses = _serviceProvider.GetService<ICacheRepository>(); //<< ОШИБКА В ЭТОЙ СТРОКЕ:
		//	Unable to resolve service for type 'EasyCaching.Core.IEasyCachingProviderFactory' 
		//	while attempting to activate 'MyGlobal.Services.Concrete.CacheRepository'. 

		// ................
	}
...
Рейтинг: 0 / 0
How to resolve this DI
    #39939282
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RegisteredUser,

а где регистрация реализации IEasyCachingProviderFactory
...
Рейтинг: 0 / 0
How to resolve this DI
    #39939283
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RegisteredUser,

и нафига, есть же IMemoryCache, IDistributedCache
...
Рейтинг: 0 / 0
How to resolve this DI
    #39939295
RegisteredUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVostt
RegisteredUser,

а где регистрация реализации IEasyCachingProviderFactory


у меня в первом проекте IEasyCachingProviderFactory встречается 2 раза всего,
как я описал выше:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
using EasyCaching.Core;

        public class CacheRepository : ICacheRepository
        {
            IEasyCachingProviderFactory _factory;
            IDBCommander _dbCommander;
            IGateService _gate;


            public CacheRepository(IEasyCachingProviderFactory factory, IDBCommander dbCommander, IGateService gate)
            {
                _factory = factory;
                _dbCommander = dbCommander;
                _gate = gate;
            }

            IEasyCachingProvider GetProvider(string name = "default")
            {
                return _factory.GetCachingProvider(name);
            }
		// ................
        }



больше никакой реализация нет, но в первом проекте все работает нормально
...
Рейтинг: 0 / 0
How to resolve this DI
    #39939307
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
How to resolve this DI
    #39939337
RegisteredUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость


дело в том, что в первом проекте, где все работает НЕТ ничего похожего на пп 2 и 3


вот этого нет
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
2. Config in Startup class

public void ConfigureServices(IServiceCollection services)  
{  
    //other ..  

    services.AddEasyCaching(option=> 
    {
        //use memory cache
        option.UseInMemory("inmemory1");

        //use memory cache
        option.UseInMemory("inmemory2");   
    });
}  



в Startup.cs
только 1 строка
services.AddSingleton<ICacheRepository, CacheRepository>();
...
Рейтинг: 0 / 0
How to resolve this DI
    #39939341
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RegisteredUser,

Просто нужно понимать, чисто логически, что если есть зависимость, значит нужно зарегистрировать её реализацию. DI это не волшебство и магия, само по себе ничего не делается.

Вы используете библитеку, где требуется регистрация.
Инструкция приложена.

Не знаю что ещё вам посоветовать. Если такое объяснение не устраивает, значит прямой путь к гадалке :)
...
Рейтинг: 0 / 0
How to resolve this DI
    #39939500
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt ну что ты портишь все! я то думал заклинания пишу! вот вчера эльфиский f# смотрел и плакал(
...
Рейтинг: 0 / 0
How to resolve this DI
    #39939509
RegisteredUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
итак, рассказываю как оно заработало, может кому пригодится

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
    public class TestСlass
    {

        IEasyCachingProviderFactory _factory;
        IOptions<ServiceOptions> mobOptions;

	// конструктор в другом проекте
        public TestСlass()
        {
            _factory = new Mock<IEasyCachingProviderFactory>().Object;
            _factory.GetCachingProvider("orderStatuses");

		// ................
            _services.AddSingleton<IGateService, GateService>();
            _services.AddSingleton<IDBCommander, DBCommander>();
		// ................
	}

	// метод в другом проекте
        public void  TestMethod()
        {
            var commander = _serviceProvider.GetService<IDBCommander>();
            var logger = _serviceProvider.GetService<ILogger<GetOrderHandler>>();
            var loggerJ = _serviceProvider.GetService<ILogger<GateService>>();

            GateService jGate = new GateService(_mobileServiceBus, loggerJ, mobOptions);
            CacheRepository orderStatusesRepository = new CacheRepository(_factory, commander, jGate); 

		// ................
	}
...
Рейтинг: 0 / 0
How to resolve this DI
    #39939513
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RegisteredUser,

могли бы сразу написать, что Unit-тесты пишите
...
Рейтинг: 0 / 0
How to resolve this DI
    #39939688
RegisteredUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANA
RegisteredUser,

могли бы сразу написать, что Unit-тесты пишите

в принципе, моя проблема была как-то старанновата.
все остальные сервисы поднимались нормально, а именно этот глюканул
...
Рейтинг: 0 / 0
How to resolve this DI
    #39939709
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RegisteredUser,

Чего там глюкануло? Сейчас вы мокаете свою зависимость явно.
...
Рейтинг: 0 / 0
How to resolve this DI
    #39939800
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RegisteredUser
skyANA
RegisteredUser,

могли бы сразу написать, что Unit-тесты пишите

в принципе, моя проблема была как-то старанновата.
все остальные сервисы поднимались нормально, а именно этот глюканул

Ничего странного. Просто вы ещё не разобрались в том, как unit-тесты писать, и что в них мокать.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / How to resolve this DI
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]