我正在做的项目,每个类都有自己的接口,具有以下命名约定
ClassA.cs : IClassA.cs
ClassB.cs : IClassB.cs 等
目前在 Autofac 的引导程序中,我反复放置
builder.RegisterType<ClassA>.As<IClassA>();
builder.RegisterType<ClassB>.As<IClassB>();
Run Code Online (Sandbox Code Playgroud)
有一些单身人士可以很好地衡量。
有没有办法自动化绑定过程?我知道手动添加绑定不需要大量的额外工作,但随着时间的推移它会变得更糟,我敢肯定。
我目前在我的容器中有以下内容
builder.RegisterType<MyClass>().As<IMyClass>().SingleInstance();
var myAss = Assembly.GetExecutingAssembly();
builder.RegisterAssemblyTypes(myAss)
.Where(t => t.IsClass )
.As(t => t.GetInterfaces().Single(i =>
( i.Name.Length == t.Name.Length + 1 ) &&
( i.Name == "I" + t.Name)));
Run Code Online (Sandbox Code Playgroud)
但是,查看生成器的监视窗口。看起来好像它可能会注册 Myclass 两次。现在我在这里可能完全错了,因为我一生都无法通过监视窗口找到实际在构建器中注册的内容。
如果我错了,请给我一巴掌。
只是想对ninject中Kernel.Resolve和Kernel.Get之间的区别做一些澄清.
Kernel.Get状态的描述
通过使用与指定约束匹配的第一个绑定来获取指定服务的实例
Kernel.Resolve状态的描述
解析指定请求的实例.在消费者迭代枚举之前,实际上并未解析实例.
您可以在哪些情况下使用其中任何一种?(现在我正在使用Get)