多个接口到同一个具体类

时间:2013-01-04 14:42:40

标签: polymorphism ninject

这应该不起作用吗?

接口

public interface IConfig : ISmtpConfig, IEventConfig

结合

kernel.Bind<IConfig>().To<Config>();

用法

public SmtpClient(ISmtpConfig config)

它抱怨它无法找到ISmtpConfig的任何绑定

2 个答案:

答案 0 :(得分:1)

我会在这里保留这个问题,因为如果你谷歌'混凝土'谷歌不会链接到SO。 你需要做

kernel.Bind<IConfig, IEventConfig, ISmtpConfig>()

对我而言,这是多余的信息,但也许很难动态地做到这一点

答案 1 :(得分:1)

安德斯的回答是正确的。这个答案跟随史蒂文和安德斯的评论。如果您使用约定扩展,则有BindAllInterfaces()。这会自动绑定类的所有接口。这是一个例子:

kernel.Bind( x => x
    .FromThisAssembly() // 1
    .SelectAllClasses().InNamespaceOf<IConfig>() // 2
    .BindAllInterfaces() // 3
    .Configure(b => b.InSingletonScope())); // 4