为什么Light Inject的源代码都在一个.cs文件中

时间:2014-02-28 05:03:54

标签: c# dependency-injection inversion-of-control ioc-container light-inject

像这样https://github.com/seesharper/LightInject/blob/master/LightInject/LightInject.cs

难以阅读,有什么深刻的含义吗?

2 个答案:

答案 0 :(得分:14)

作为LightInject的作者,我觉得我应该对此发表评论:)

假设您是一名图书馆开发人员,并希望能够在内部使用IoC框架而不依赖于第三方程序集。通过使用LightInject的源版本,可以非常轻松地完成此操作,您仍然可以将库作为单个程序集发送。

许多框架开发人员选择不使用IoC框架只是因为他们不想要额外的依赖。

替代方法是使用ILMerge之类的工具,它能够将两个或多个程序集合并到一个程序集中。

这是一个更高级的选项,还需要额外的构建步骤来执行合并。

请注意,LightInject有两种版本,源版本所有类型都是内部版本,二进制版本就像任何其他第三方依赖项一样。

首先承担依赖关系可能并不是那么糟糕,但如果您是框架开发人员,如果框架的使用者使用相同依赖关系的另一个版本,则很容易遇到问题

祝你好运

Bernhard Richter

答案 1 :(得分:5)

它使集成作为另一个项目中的源更容易:只需将一个文件添加到项目中就可以忘掉它。根据LightInject的official website,这是一个受支持的安装方案,甚至还有一个NuGet包。

如果您想阅读它,我强烈建议您在Visual Studio中打开它并使用代码导航功能查找您想要的内容,例如: VS 2013的Solution Explorer可以将文件内的类显示为该文件的子类。