我正在试图弄清楚如何告诉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
{
}
答案 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);