一个DI容器,用于多个ASP.Net应用程序

时间:2009-09-14 09:16:41

标签: c# asp.net design-patterns dependency-injection

我正在尝试为我的公司设计基础架构库。库将具有典型的组件,如日志记录,异常处理,电子邮件等。这些组件将被我们环境中托管的所有ASP.Net应用程序使用(因此托管环境是我的控制)。

我设计的第一步是我不希望ASP.nEt应用程序直接引用库组件。所以我想在运行时注入这些依赖。我已经评估了很多DI容器(unity,spring.net等)

但我不必做的是强制所有ASP.Net应用程序使用这个DI容器。他们将获得所有库组件的接口Dll和一些工厂dll,它们将为它们提供组件的具体实例。

我的问题是设计这个工厂dll的最佳方法是什么,只有一个dll可以为所有ASP.Net应用程序提供服务?我可以使用一个DI容器来为所有ASP.Net应用程序提供服务吗?

1 个答案:

答案 0 :(得分:1)

好吧,你可以简单地定义一个像这样的容器界面:

public interface IContainer
{
    T Resolve<T>();
}

(显然,如果需要,您可以添加更多方法)。然后,您可以根据您选择的DI容器创建此IContainer接口的具体实现。

这样的具体实现可以封装应用程序在注册组件方面所需的所有配置。

您的ASP.NET应用程序将使用IContainer接口并调用Resolve方法来获取必要组件的实例。