Привязка к другому контексту в зависимости от типа целей Injection - PullRequest
1 голос
/ 06 января 2012

Я хочу иметь возможность использовать ninject, чтобы вводить другой тип DBContext в разные области моего приложения.Кто-нибудь знает, можете ли вы сделать это с помощью девятого предложения When?

Что-то вроде:

        Bind<DbContext>().To<ServiceContext1>().When(t=>t.Target.Type.Assembly.FullName.StartsWith("Namespace.Context1."));
        Bind<DbContext>().To<ServiceContext2>().When(t => t.Target.Type.Assembly.FullName.StartsWith("Namespace.Context2."));
        Bind(typeof(IRepositoryDataSource<>)).To(typeof(DbContextRepositoryDataSource<>));
        Bind(typeof(IRepository<>)).To(typeof(SimpleRepository<>));

1 Ответ

3 голосов
/ 06 января 2012

request.Target.Type возвращает тип параметра. Вы ищете request.Target.Member.ReflectedType. Поскольку вы вставляете контекст в идентичный репозиторий, вам, вероятно, придется проверять родительский запрос, используя request.ParentRequest или даже деда, а не запрос, потому что там вы всегда получите тип репозитория.

...