在Ninject中,如何将具有特定基本接口的所有绑定设置为单例

时间:2011-10-05 14:33:06

标签: ninject automapper

我正在试图弄清楚如何告诉ninject将范围设置为具有特定基类型的所有绑定。我认为以下是接近的,但它不起作用:

var scanner = new AssemblyScanner();
scanner.FromCallingAssembly();
scanner.BindWith<DefaultBindingGenerator>();
kernel.Scan(scanner);

//maps.Count is always 0 :-(
var maps = kernel.GetBindings(typeof(IMapper<,>));
foreach (var map in maps)
{
    map.ScopeCallback = StandardScopeCallbacks.Singleton;
}

我想成为单身人士的其中一个对象:

public interface ILoanApplicationModelToViewMapper : IMapper<LoanApplication, LoanApplicationViewModel>
{
}

public class LoanApplicationModelToViewMapper : Mapper<LoanApplication, LoanApplicationViewModel>, ILoanApplicationModelToViewMapper
{
}

1 个答案:

答案 0 :(得分:1)

装配扫描仪有一些魔力最终起作用

        var scanner = new AssemblyScanner();
        scanner.WhereTypeIsNotInNamespace("Loan.Service.Storage.Context");
        scanner.WhereTypeIsNotInNamespace("Loan.Service.Mappers");
        scanner.FromCallingAssembly();
        scanner.BindWith<DefaultBindingGenerator>();
        kernel.Scan(scanner);

        var mapScanner = new AssemblyScanner();
        mapScanner.FromCallingAssembly();
        mapScanner.WhereTypeIsInNamespace("Loan.Service.Mappers");
        mapScanner.BindWith<DefaultBindingGenerator>();
        mapScanner.InSingletonScope();
        kernel.Scan(mapScanner);