2012-11-22 36 views
0

相当平常的场景:Ninject绑定“从x中继承”

public class A { } 
public class B:A {} 
public class C:A {} 

我真的不知道,如果它可以创建Ninject绑定是解决从A所有继承这样的:

Bind<A>().ToMethod(ctx => proxyFactory.CreateProxy(ctx.Request.Service) as A); 

这当然只适用于类型A的请求。对B和C的请求以默认方式处理。

在此先感谢

+0

你为什么不绑定'B'和'C'为'A'并在构造函数中调用'GetAll ()'或者'IEnumerable '? – khellang

+0

在我的应用程序中,A是一个ViewModelBase类。每当我添加新的ViewModels,我宁愿不必再次更新映射... –

回答

2

如果它是一个可能性,即ninject.extensions.conventions,可以动态绑定他们是这样的:

kernel.Bind(x => x 
    .FromThisAssembly() 
    .SelectAllClasses() 
    .InheritedFrom<A>() 
    .BindBase() 
    .Configure(c => c.InTransientScope())); 
+0

听起来像一个选项,是的!我今天晚些时候会尝试... –