- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试在现有 MVC4 应用程序中开始使用依赖注入(inject)。我已经安装了 Autofac 3.1.1 和 Autofac MVC4 集成 3.1.0。到目前为止,我对此非常满意 - 但是,我很难请求确定一次性服务的范围:
namespace App_Start
{
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Autofac;
using Autofac.Integration.Mvc;
public static class KernelConfig
{
private static IContainer Container { get; set; }
public static void Register()
{
var builder = new ContainerBuilder();
builder.RegisterControllers(typeof(MvcApplication).Assembly);
builder.RegisterType<Bar>()
.As<IBar>()
.InstancePerHttpRequest();
builder.RegisterType<Foo>()
.As<Foo>()
.SingleInstance();
Container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(Container));
}
class Foo
{
private readonly IBar _bar;
public Foo(IBar bar)
{
_bar = bar;
}
}
interface IBar
{
void DoStuff();
}
class Bar : IBar, IDisposable
{
public void DoStuff() { }
public void Dispose() { }
}
}
}
如果我在 Controller 构造函数中请求 IBar 的实例,一切都会按预期工作 - 每次都会创建一个新的 Bar,每次都会销毁。但是,如果我在我的 Controller 构造函数中请求 Foo,我会收到以下消息:
"No scope with a Tag matching 'AutofacWebRequest' is visible from the scope in which the instance was requested"
据我所知,Autofac 正在创建一个新的 Foo 作为单例。虽然这看起来很明显(我要求它是一个单例),但我希望 Autofac 遍历依赖树并在整个树中使用相同的生命周期。 (即如果一个单例包含一个 transient ,那么两者都应该是 transient 的)
这是预期的行为吗?我做错了什么?
最佳答案
您可以使用对IBarFactory 的依赖,而不是IBar。 IBarFactory 将拥有单例生活方式,它将返回 IBar 实例,该实例将从容器中解析。
关于c# - 解析 "Singleton"内的 InstancePerHttpRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19103281/
我已经在我的 Global.asax.cs 中注册了这样一个组件: ContainerBuilder builder = new ContainerBuilder(); builder.Registe
我正在尝试在现有 MVC4 应用程序中开始使用依赖注入(inject)。我已经安装了 Autofac 3.1.1 和 Autofac MVC4 集成 3.1.0。到目前为止,我对此非常满意 - 但是,
这两个作用域有什么区别? 我在每一层(存储库、服务、MVC 应用程序)中构建模块(s),但为了拥有InstancePerHttpRequest,您需要 Autofac.Mvc 程序集。 我应该在存储库
以下 autofac 代码的 Ninject 是什么: builder.RegisterType().As().InstancePerHttpRequest(); 基本上,我想为应用程序内的特定用户共
我需要在我的 MVC3 项目中引用 Autofac.Integration.Mvc 和 Autofac.Integration.Web dll,并且遇到以下与 的命名冲突InstancePerHttp
我正在构建一个以 MVC3 作为主要前端的四层系统,但包含由服务层异步运行并报告进度的长时间运行的任务,MVV 将使用 Ajax 显示这些任务。我使用 Autofac 进行依赖项注入(inject)
我正在尝试使用 Autofac 将依赖项注入(inject)到 MVC 4 应用程序中的 FluentValidation 中。我想我已经制定了策略,但是我一直无法解决我的单例请求 ISomethin
我的应用程序与 VS 2013 的 Web API 默认模板完全相同。基本上,Web API 2 用于 API,MVC 5 用于文档。 我正在使用Autofac,到目前为止它运行良好。以下是我所拥有的
我已经读过 DbContext 对象应该创建为 InstancePerHttpRequest,而不是 SingleInstance,因为它的线程不安全性质,并且它可能在请求之间消耗太多资源,这很有意义
我是一名优秀的程序员,十分优秀!