我开始使用Windsor了,我想知道何时使用container和何时使用kernel.例如
var c = new WindsorContainer();
c.Register(Component.For<ITt>().ImplementedBy<Tt>());
var tt = c.Resolve<ITt>();
Run Code Online (Sandbox Code Playgroud)
一切都很好,一切正常,但这也是c.kernel可以做同样的,为什么?
var c = new WindsorConatiner();
c.kernel.Register(Component.For<ITt>().ImplementedBy<Tt>());
var tt = c.kernel.Resolve<ITt>();
Run Code Online (Sandbox Code Playgroud)
老实说,我不也明白有什么区别 之间的 " 容器 "和" 核心 "一词.在我看来,它听起来像是不同IoC库中同一个东西的两个名字?
PS我读过这篇文章,但仍然无法理解这里有两个实现的功能吗?
更新: 刚刚在我的代码中找到这样的行
c.Kernel.Resolver.AddSubResolver(new ArrayResolver(c.Kernel));
Run Code Online (Sandbox Code Playgroud)
通过内核做到这一点的原因是什么?我完全输了
DataProvider和Repository有什么区别?在选择如何命名我的班级时,我应该使用什么逻辑?
存储库模式或多或少地描述了类:
internal interface IPersonRepository{
public void Update(Person p);
public void Add(Person p);
public Person Get(int id);
public IEnumerable<Person> GetBatch();
public void Delete(Person p);
}
Run Code Online (Sandbox Code Playgroud)
这是一种理论,但在现实生活中可能还有其他更具体的方法,比如GetListPerson(int[] ids)等等.
但是与DataProvider有什么区别?
我有完美的msbuild脚本.但是当它在执行构建任务时运行时,我看到了构建进度的所有输出.有没有办法写:
建设项目......好的.
而不是1000行的文字?
让我们说你有:
Func<string> a = () => "string here";
Func<string> b = () => "other string here";
var c = a + b;
Run Code Online (Sandbox Code Playgroud)
真实世界需要什么呢?