Ninject 按参数名称绑定
Ninject Binding By Parameter Name
我使用 ASP .NET MVC 和 Ninject。我需要参数名称的条件绑定。我该怎么做?
private readonly ITemplateProvider _msgTemplate;
private readonly ITemplateProvider _mailTemplate;
public OrderLineManager(ITemplateProvider msgTemplate,ITemplateProvider mailTemplate)
{
_msgTemplate = msgTemplate;
_mailTemplate = mailTemplate;
}
//ninject kernel ,
//i need for msgTample MessageTemplateProvider
//i need for mailTemplate MailTemplateProvider
_kernel.Bind<ITemplateProvider>()
.To<MessageTemplateProvider>()
.When(request => request.Target.Member.Name.Equals("msgTemplate"));
_kernel.Bind<ITemplateProvider>()
.To<MailTemplateProvider>()
.When(request => request.Target.Member.Name.Equals("mailTemplate"));
试试这个:
.when(a => a.Parameters.Single(b => b.Name == "parametername"))
不过我认为这不适用于旧版本的 Ninject。
_kernel.Bind<ITemplateProvider>().To<MessageTemplateProvider>().When(a => a.Target.Name == "msgTemplate");
_kernel.Bind<ITemplateProvider>().To<MailTemplateProvider>().When(a => a.Target.Name == "mailTemplate");
我使用 ASP .NET MVC 和 Ninject。我需要参数名称的条件绑定。我该怎么做?
private readonly ITemplateProvider _msgTemplate;
private readonly ITemplateProvider _mailTemplate;
public OrderLineManager(ITemplateProvider msgTemplate,ITemplateProvider mailTemplate)
{
_msgTemplate = msgTemplate;
_mailTemplate = mailTemplate;
}
//ninject kernel ,
//i need for msgTample MessageTemplateProvider
//i need for mailTemplate MailTemplateProvider
_kernel.Bind<ITemplateProvider>()
.To<MessageTemplateProvider>()
.When(request => request.Target.Member.Name.Equals("msgTemplate"));
_kernel.Bind<ITemplateProvider>()
.To<MailTemplateProvider>()
.When(request => request.Target.Member.Name.Equals("mailTemplate"));
试试这个:
.when(a => a.Parameters.Single(b => b.Name == "parametername"))
不过我认为这不适用于旧版本的 Ninject。
_kernel.Bind<ITemplateProvider>().To<MessageTemplateProvider>().When(a => a.Target.Name == "msgTemplate");
_kernel.Bind<ITemplateProvider>().To<MailTemplateProvider>().When(a => a.Target.Name == "mailTemplate");