我不会使用隐式属性注入,因为如果类型没有(正确)注册,容器将跳过属性,而不是快速失败(更多信息) 这里 )。相反,我会使用服务定位器,但编写一个不包含任何逻辑的包装器成员资格提供程序,只是从服务定位器请求成员资格提供程序并调用该实现。 乔纳斯高夫 写 对于MVC这样的事情 (使用 DependencyResolver 服务定位器),这是非常好的(也 可在NuGet上获得 ),但你自己很容易。
DependencyResolver
虽然服务定位器的使用被认为是反模式,但请记住,必须通过web.config配置成员模型,并且系统的这部分不使用 DependencyResolver.Current 本身。还写这样的 DependencyResolverMembershipProvider 只是一些机制,可以被认为是组合根的一部分,而不是应用程序的一部分。在组合根目录中调用容器不是问题。
DependencyResolver.Current
DependencyResolverMembershipProvider