5

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

好难读,有什么深意吗?

4

2 回答 2

15

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

假设您是库开发人员,并且希望能够在内部使用 IoC 框架而不依赖第三方程序集。通过使用 LightInject 的源版本,这可以很容易地完成,您仍然可以将您的库作为单个程序集发布。

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

对此的替代方法是使用诸如 ILMerge 之类的工具,该工具能够将两个或多个程序集合并为一个程序集。

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

请注意,LightInject 有两种风格,所有类型都是内部的源版本和与任何其他第三方依赖项一样作用的二进制版本。

开始依赖依赖可能看起来并没有那么糟糕,但如果你是一个框架开发者,如果你的框架的使用者使用相同依赖的另一个版本,你很容易遇到问题

此致

伯恩哈德·里希特

于 2014-03-10T10:23:08.187 回答
5

它使作为源代码集成到另一个项目中变得更容易:只需将一个文件添加到您的项目中,然后忘记它。这是LightInject官网支持的安装场景,甚至还有一个NuGet包。

如果您想阅读它,我强烈建议您在 Visual Studio 中打开它并使用代码导航功能来查找您想要的内容,例如 VS 2013 的解决方案资源管理器可以将文件内的类显示为该文件的子文件。

于 2014-02-28T07:19:36.417 回答