asp.net-mvc-3 - CaSTLe.Windsor,ASP.NET MVC,处理注入(inject)的空解析

标签 asp.net-mvc-3 castle-windsor

ASP.NET MVC(3.0)中使用CaSTLe.Windsor,如果我的依赖项之一解析为空,有什么方法可以适当处理?例如,假设我有一个 IMmbershipService

class ServiceInstaller
{
 // ... 
 void Install( // .. )
 { 
  container.Register(
  Component
  .For<IMembershipService>()
  .ImplementedBy<MembershipService>()
  .LifeStyle.PerWebRequest
  );
 }
}

好的,这很好用。现在,也许并非我的所有站点都需要用户登录。假设我的 Web 主机的数据库服务器可能崩溃了几个小时。在这种情况下,查看数据库或尝试调用我的 ISession 的内容可能会返回 null。

这种情况我能做什么?我可以写 if(membershipService == null) 一百遍,但这看起来很愚蠢。是否有一个内置的解决方案可以说“嘿,如果我们遇到错误,请执行此操作......?”

最佳答案

我认为服务永远不应该为空。如果数据库关闭,服务仍应返回,但其方法应抛出异常、返回 null 或某个默认值,具体取决于服务的语义。

关于asp.net-mvc-3 - CaSTLe.Windsor,ASP.NET MVC,处理注入(inject)的空解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4922196/

相关文章:

asp.net-mvc-3 - 用作 Action 方法参数的 View Model 实例的构造函数注入(inject)

.net - 在 MVC asp.net 中的客户端 PC 上完成下载后,如何删除文件

c# - 将枚举的内容获取到下拉列表

constructor - Quartz.net IJobDetails 使用手动创建的 IJob 实现

dependency-injection - 具有开放通用接口(interface)的温莎类型工厂

json - JSON 如何从错误中确定成功?

asp.net-mvc - ASP.NET MVC 中的数据注释

caSTLe-windsor - 城堡温莎 : Get all names of registered components for a specific interface

c# - 使用 AutoMapper.Profile 创建实例(非静态)映射器

c# - 让 Caliburn.Micro 使用 Windsor 在单独的程序集中绑定(bind)我的 View 和 VM