powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Ninject один интерфейс несколько класов
13 сообщений из 13, страница 1 из 1
Ninject один интерфейс несколько класов
    #39172375
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
День добрый,
помогите плизз, не получается забиндить классы в Нинжект.
По одному работает, когда 2 не хотит (. Понимаю что нинжект не понимает какой класс ему выбрать.
Но как реализовать чтоб понимал не пойму...

Код: c#
1.
2.
            kernel.Bind<IPayments>().To<DomesticPayments>();
            kernel.Bind<IPayments>().To<InternalPayments>();



Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
    public interface IPayments
    {
        IEnumerable<Payment> GetPayments(PaymentType PaymentType);
    }
    
   public class InternalPayments : Payments
    {
        private readonly IPaymentsFactory paymentsFactory;
        public InternalPayments(IPaymentsFactory paymentsFactory)
        {
            this.paymentsFactory = paymentsFactory;
        }
        public override IEnumerable<Payment> GetPayments(PaymentType PaymentType)
        {
            
           var payments = paymentsFactory.CreatePayments(PaymentType);
            
            // Логика

            return payments;
        }
    }
...
Рейтинг: 0 / 0
Ninject один интерфейс несколько класов
    #39172391
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артем G, это возможно. Есть две неплохие статьи на эту тему:
https://github.com/ninject/Ninject/wiki/Multi-injection
https://github.com/ninject/ninject/wiki/Contextual-Binding
...
Рейтинг: 0 / 0
Ninject один интерфейс несколько класов
    #39172487
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Axeleron,

Натыкался на эти статьи. И тут вопрос.
Как я подумал нужно единожды указать вот это
Код: c#
1.
2.
3.
4.
kernel.Bind<IPayments>().To<DomesticPayments>();
kernel.Bind<IPayments>().To<InternalPayments>();
в
public class NinjectDependencyResolver : IDependencyResolver


А в примере такое ощущение что это используется в контроллере (сорри проект mvc, не та ветка форума)
Можно это использовать в контроле?
Код: c#
1.
2.
        Ninject.IKernel kernel = new StandardKernel(new TestModule());
        var samurai = kernel.Get<Samurai>();
...
Рейтинг: 0 / 0
Ninject один интерфейс несколько класов
    #39172496
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему бы и нет? Какая разница где использовать?
...
Рейтинг: 0 / 0
Ninject один интерфейс несколько класов
    #39172499
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AxeleronПочему бы и нет? Какая разница где использовать?

я подумал почему-то что в нинжект как в автомаппере с профайлами
...
Рейтинг: 0 / 0
Ninject один интерфейс несколько класов
    #39172577
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AxeleronПочему бы и нет? Какая разница где использовать?

и еще такой момент. если не ошибаюсь нинжект помогает сделать приложение менее связанным.
а если в каждом контроллере будет kernel то какой тогда смысл в нинжекте? вероятно я не прав.
...
Рейтинг: 0 / 0
Ninject один интерфейс несколько класов
    #39172584
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артем Gи еще такой момент. если не ошибаюсь нинжект помогает сделать приложение менее связанным.
а если в каждом контроллере будет kernel то какой тогда смысл в нинжекте? вероятно я не прав.
Если в каждом контроллере нужен kernel, то ничего страшного, но скорее всего что-то в архитектуре приложения не того.
...
Рейтинг: 0 / 0
Ninject один интерфейс несколько класов
    #39172703
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronАртем Gи еще такой момент. если не ошибаюсь нинжект помогает сделать приложение менее связанным.
а если в каждом контроллере будет kernel то какой тогда смысл в нинжекте? вероятно я не прав.
Если в каждом контроллере нужен kernel, то ничего страшного, но скорее всего что-то в архитектуре приложения не того.например что?
...
Рейтинг: 0 / 0
Ninject один интерфейс несколько класов
    #39172755
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AxeleronАртем Gи еще такой момент. если не ошибаюсь нинжект помогает сделать приложение менее связанным.
а если в каждом контроллере будет kernel то какой тогда смысл в нинжекте? вероятно я не прав.
Если в каждом контроллере нужен kernel, то ничего страшного, но скорее всего что-то в архитектуре приложения не того.

Проблема к сожалению не в архитектуре а в голове ( ... разъясню как происходит (кто виноват и что делать)

Есть задача ... идешь в инет читаешь ... ага народ использует DI. почитал ... круто ... решил использовать
Нормальная ситуация - это открываешь гайд по всему этому делу и читаешь от корки до корки 200-300 страниц за день )))
Потом если что-то плохо усвоилось возвращаешься и перечитываешь...
Теперь типичная не нормальная ситуация ... берешь любой первый попавшийся пример и начинаешь писать код ... а проблемы решаешь по мере поступления

Может я и хотел бы пойти нормальным путем, но не нашел гайда на офф форуме. Что-то там видел но прям чтоб с оглавлением нет.
Да и кому второй путь не ближе ? ))))
Странно то, что мой пример вроде типичная ситуация, часто встречающаяся, и примеры в инете вроде есть, а что-то у меня не выходит.
...
Рейтинг: 0 / 0
Ninject один интерфейс несколько класов
    #39172793
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хехе,
решил проблему... проблема действительно была в реализации самого паттерна фабрика, а не в бидинге нинжекта
и да ... было достаточно забиндить только одну фабрику, в которой перечислена нициализация классов платежей в зависимости от типа

Всем спасибо за диалог )))
...
Рейтинг: 0 / 0
Ninject один интерфейс несколько класов
    #39173047
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAAxeleronпропущено...

Если в каждом контроллере нужен kernel, то ничего страшного, но скорее всего что-то в архитектуре приложения не того.например что?
Ну у нас это делается довольно часто, например
...
Рейтинг: 0 / 0
Ninject один интерфейс несколько класов
    #39173087
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronskyANAпропущено...
например что?
Ну у нас это делается довольно часто, например То есть ты не доволен текущей архитектурой в своём проекте? Предложи решение :)
...
Рейтинг: 0 / 0
Ninject один интерфейс несколько класов
    #39173123
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAAxeleronпропущено...

Ну у нас это делается довольно часто, например То есть ты не доволен текущей архитектурой в своём проекте? Предложи решение :)
Я всем доволен как слон.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Ninject один интерфейс несколько класов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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