首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >依赖注入HTTPModule

依赖注入HTTPModule
EN

Stack Overflow用户
提问于 2009-01-14 13:25:34
回答 3查看 2.7K关注 0票数 3

谷歌/我的大脑让我失望了。如果不使用框架(这是我永远无法通过同事了解的),那么如果您(程序员)无法控制创建实例,那么如何将依赖注入到HTTPModule中呢?

我们是要侵入定制的web.config部分+反射,还是有什么更干净的东西我没有看到?

例如,使用Karl的示例模块作为基础,并假设ILogger的实现。.Net 2.0 fwiw

代码语言:javascript
复制
public class ErrorModule : IHttpModule
{
    private ILogger injectedLogger; //how to set this?

    public void Init(HttpApplication application)
    {
        application.Error += (new EventHandler(this.application_Error));
    }

    public void Dispose() { /* required by IHttpModule */ }

    private void application_Error(object sender, EventArgs e)
    {
        this.injectedLogger.doStuff(e.ExceptionObject as Exception);
    }
}

这样的事情让我意识到我有多鄙视MSDN。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-01-14 14:45:13

我偶然发现了一个程序解决方案。完全消除web.config引用,您可以在global.asax中添加一个模块,如果您对生命周期非常小心的话。

在global.asax中添加:

代码语言:javascript
复制
public static ErrorModule myErrorModule;

public override void Init()
{
    base.Init();
    myErrorModule = new ErrorModule(new LogImplementer());
    myErrorModule.Init(this);
}

其中,"LogImplementer“实现ILogger,只需向httpmodule添加构造函数:

代码语言:javascript
复制
public ErrorModule(ILogger injected)
{
    this.Logger = injected;
}

有一些健康警告。您必须非常小心在何处执行这个int -- global.asax (我非常肯定Init()是正确的,但我不确定),并且模块没有添加到只读HttpApplication.Modules集合中。除此之外,效果很好。

票数 5
EN

Stack Overflow用户

发布于 2009-01-14 13:58:57

您可以使用非常简单的一类ioc 15分钟33线IoC集装箱

票数 0
EN

Stack Overflow用户

发布于 2009-11-09 08:46:22

请看一下我对类似问题的回答:

IoC依赖注入自定义HTTP模块-如何?(ASP.NET)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/442918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档