2012-04-30 5 views
0

Можно создать дубликат:
Inject repository to custom membership provider with Ninjectпоставщик Ninject и заказ членство Mvc3

Я искал много об этой теме слишком много, наиболее близкий ответ был здесь MVC 3 ninject custom membership context disposed error , но я не есть какие-либо представления о деталях, которые у меня есть в моем приложении, - это домен, содержащий мои сущности и абстракцию для репозиториев, и реализация все отлично работает, когда я использую привязку Ninject, например, это

public class NinjectControllerFactory : DefaultControllerFactory{ 
    readonly IKernel _kernel; 


    public NinjectControllerFactory(){ 
     _kernel=new StandardKernel(); 
     AddBindings(); 
    } 


    protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType){ 
     return controllerType == null 
      ? null 
      : (IController) _kernel.Get(controllerType); 
    } 
void AddBindings(){ 
     _kernel.Bind<IٍSomeRepository>() 
      .To<EFSomeRepository>(); 

, но я понятия не имею, как связать поставщика членства клиента я прочитал об этом, что я должен впрыскивать через но я недвижимости и имущества не знаю, как, какие идеи?

+0

Извините, vtcing, поскольку это слишком похоже на другой связанный вопрос –

ответ

0

Во-первых, вы должны использовать Ninject.MVC3, а не свою собственную фабрику контроллеров. Ninject.MVC3 позаботится о том, чтобы подключить все, вам просто нужно предоставить свои сопоставления в App_Start \ NinjectWebCommon.cs

Во-вторых, не беспокойтесь при использовании Ninject для членства, если вы не используете пользовательский поставщик членства. Даже тогда, это намного меньше боли, если вы не смешиваете Ninject и Membership. Я бы посоветовал не беспокоиться об этом, если вы действительно не знаете, что делаете.

Проблема в том, что членство является статическим классом, который создает статический экземпляр поставщика членства. Это означает, что он не будет уничтожен в конце запроса. Есть способы обойти это, но в общем, намного проще использовать членство как есть, чем пытаться заставить его работать с DI.

Вопрос, который вы связали, решает определенную проблему, связанную с введением бизнес-логики в ваш пользовательский поставщик членства. Если вам нужно это сделать, тогда это может быть хорошим выбором. Тем не менее, я считаю, что большинство поставщиков пользовательских членских взносов, как правило, очень просты.

Смежные вопросы