【问题标题】:C# class library project dependency injection bootstrapC#类库项目依赖注入引导
【发布时间】:2013-07-26 12:40:32
【问题描述】:

我最近使用 Autofac 作为 IoC 容器的依赖注入模式。

通常,我会在核心应用程序(Winform、WCF、WPF 等)中使用它。

目前我正在学习创建一个类库项目作为我的同行开发人员的框架,我倾向于坚持使用 DI 模式,因为它允许我随时进行单元测试。

如何在没有入口点的类库项目中配置 IoC Container?

我应该做类似的东西吗:

public static void ConfigureLibrary() {
     //.. Do bootstraping here
}

并让核心应用程序在核心应用程序启动时调用它?

Patterns & Practices Enterprise Library 或 Spring.Net 等库是如何配置的?

【问题讨论】:

标签: c# .net dependency-injection inversion-of-control class-library


【解决方案1】:

Patterns & Practices Enterprise Library 或 Spring.Net 配置好了吗?

这里是来自 Chris Tavares 的an interesting article,关于这个主题。

【讨论】:

  • 确实很有趣.. 根据我的理解请原谅我是初学者,即使像 EntLib 这样的库仍然需要用户使用外观来配置它,甚至配置就像InitializeMyClassLibrary()一样简单。是这样吗?
  • AFAIK 并非如此。 EntLib 带有一个可以按原样使用的默认配置。应该有一个默认外观。
  • 如果您想将创建过程重定向到您自己的 di 容器,可以覆盖默认配置。
  • 好吧,我可能问的太多了,但是你有关于类库中依赖注入的简单例子吗?
  • 我真的不能给你任何例子,因为这取决于你的受众和你的框架以及你希望提供的灵活性,你需要哪种策略。我认为一个好的开始是让框架类型具有调用内部重载构造函数的公共默认构造函数(一种称为穷人的 DI 的模式)。这允许您测试您的代码,同时允许用户轻松使用您的框架。根据他们的需要,您可以在 v2 中添加工厂或将那些重载的构造函数公开。
【解决方案2】:

如何在没有入口点的类库项目中配置 IoC 容器?

通常应用程序应该是您的服务注册的根。但是,是的,可以在库中提供默认注册。 Here 是几天前我和我的团队目前所做的博客文章。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-18
    • 1970-01-01
    • 2019-08-17
    • 2021-09-11
    相关资源
    最近更新 更多