Autofac SingleInstance 不工作

2024-02-03

我正在尝试获得一个与 Autofac 一起使用的 Singleton 实例。我正在用 Winforms 做一个准 mvvm 类型的事情,只是一个实验,所以不要挂断它。但我正在尝试让我的模型成为单个实例,并在命令中引用(此处的 ICommand 不是 WPF 变体):

我对容器进行了以下设置:

var cb = new ContainerBuilder();
cb.RegisterType<CalculateCommissionCommand>().As<ICommand<TradeEntry>>().SingleInstance();
cb.RegisterType<CalculationsModel>().As<ICalculationsModel>().SingleInstance();
cb.Register(c => new CalculationsView() { Model = c.Resolve<ICalculationsModel>() }).SingleInstance();
cb.Build();

现在,该命令采用 ICalculationsModel 作为构造函数参数。但是,当我在传递给命令的模型中设置值时,该值不会出现在已使用 CalculationsView 设置的模型中。尽管调用了“singleInstance”方法,但命令和视图似乎正在传递 CalculationsModel 的不同实例。我错过了什么吗?为什么会发生这种情况?


我们今天遇到了类似的问题,这似乎是唯一提出这个问题的帖子,所以我想我会分享我们的经验,希望它能帮助别人。最后,它就在我们眼前,当然它们通常是最难解决的问题:-)。

在我们的场景中,我们是:

  1. 注册配置提供程序的特定实现
  2. 自动注册程序集中的某些类型。

沿着这些思路:

var cb = new ContainerBuilder();
cb.RegisterType<FileBasedConfigurationProvider>()
    .As<IConfigurationProvider>()
    .SingleInstance();

cb.RegisterAssemblyTypes(typeof(MailProvider).Assembly)
    .Where(t => !t.IsAbstract && t.Name.EndsWith("Provider"))
    .AsImplementedInterfaces(); 

愚蠢的是,我们没有想到/意识到FileBasedConfigurationProviderMailProvider,所以第二个注册调用基本上覆盖了第一个;因此,SingleInstance“没有工作”。

希望能帮助别人!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Autofac SingleInstance 不工作 的相关文章

  • 使用 AtomicReference 的单例

    使用 AtomicReference 的延迟初始化单例是否正确实现 如果不是 可能的问题是什么 import java io ObjectStreamException import java io Serializable import
  • 使用 Autofac 将 WebAPI UrlHelper 注入服务中

    我的 WebAPI 项目中有一些控制器使用的服务 该服务需要生成 URL 因此理想情况下它会得到UrlHelper通过构造函数参数 public class MyService public MyService UrlHelper urlH
  • 将 log4net 与 WebApi 结合使用 - 在整个实例中保持相同的相关 ID

    我有一个 LoggingHandler 类 用作消息处理程序来记录 使用 log4net 请求和对我的 WebApi 的响应 public class LoggingMessageHandler DelegatingHandler publ
  • @singleton 的行为类似于@stateless bean

    我正在开发一个应用程序 java中的企业应用程序 其中我需要由多个线程同时共享的单个实例 我使用了 singleton 当每个用户登录时 通过调用 setTeleCallersDetails 远程方法在电话呼叫者列表中设置一个值 但在某些时
  • PHP5中单例与工厂模式结合

    在 PHP5 中将单例设计模式与工厂方法模式结合使用的最佳方法是什么 我最简单的使用场景是对每种数据库类型仅实例化选择性数据库连接一次 用于数据库连接的单例工厂 class Registry private static objects p
  • 获取 Autofac 中接口的所有已注册实现

    我需要从IComponentContext 已注册的列表Type是实现特定接口的 我不需要类型的实际实例 而是想要一个列表Type其中我could获取实例 我想使用此列表在消息总线上生成订阅 如何在 Autofac 中获取接口的所有已注册实
  • 从其他进程向 WPF 单例应用程序发送数据

    我有一个 WPF 单例应用程序 其中任何时候只有一个实例在运行 如果用户尝试启动另一个实例 我们检查它是否已经在运行 然后我们终止这个新进程并将现有进程置于前面 现在 我们需要从另一个进程 可以是 xls word 或另一个独立应用程序 打
  • Android 中的静态单例生命周期

    我有一些不清楚的情况 最后一个持有 Activity 的引用被销毁后 静态单例会被垃圾回收吗 因为Application中没有更多对单例实例的引用 那么我可以依赖单身人士吗 由官方提供安卓文档 http developer android
  • 在 AspNetCore 与 TestServer 的集成测试中模拟并解决 Autofac 依赖关系

    我正在使用 AspNetCore 2 2 遵循 更多 此处的文档 https learn microsoft com en us aspnet core test integration tests view aspnetcore 2 2
  • ASP .NET 单例

    只是想确保我在这里没有假设一些愚蠢的事情 在 ASP Net Web 应用程序中实现单例模式时 静态变量范围仅适用于当前用户会话 对吧 如果第二个用户正在访问该站点 那么它是不同的内存范围 静态成员仅具有当前工作进程的作用域 因此与用户无关
  • 如何在 Autofac 中使用工厂模式?

    目前我有以下内容 public interface IService void Start public class FirstService IService 我通过执行以下操作来解决该服务 using var scope lifetim
  • 单例模式 - 早期绑定(涉及静态变量)是否会减少互斥锁的需要?

    他们说早期绑定解决了同步问题 我无法理解 如何 这是 Java 的特殊之处还是 C 也同样适用 那么 使用这种方法我们实际上不需要互斥锁 JVM 确保每个类都已完全加载 然后才允许通过其他线程对其进行任何访问 这意味着所有静态变量 包括un
  • 如何在c#中创建一个完美的Singleton类?

    我想用 Singleton 类存储一些数据 据我研究 单例类只能实例化一次 但这对我不起作用 有人可以更正我的代码吗 public class MvcApplication System Web HttpApplication Single
  • Dagger 2 - 如何创建/提供 EagerSingleton

    我在使用 Dagger 2 依赖注入框架时遇到问题 我想创建一个渴望单例 我假设当我使用 dagger 2 时会创建延迟加载的单例 Singleton注解 我如何创建渴望单例使用 Dagger 2 框架 我通过创建一个解决了这个问题Eage
  • 找到的构造函数都无法使用可用的服务和参数 Autofac 进行调用

    我已阅读并编码以下示例 http timschreiber com 2015 01 14 persistence ignorant asp net identity with patterns part 1 http timschreibe
  • C++ 中的单例和抽象基类

    最近我遇到了关于实现 Singleton 但涉及抽象基类的问题 假设我们有这样的类层次结构 class IFoo it s ABC class Foo public IFoo 我们的单例类定义如下 template
  • 在实现接口的类上强制使用单例模式

    我最好用一个例子来解释这个问题 我有一个接口模型可用于访问数据 模型可以有不同的实现 可以以各种格式表示数据 例如 XMl txt 格式等 Model不关心格式 可以说这样的一个实现是myxml模型 现在我想强迫myxml模型以及其他所有实
  • 用作 ServiceStack 的 IoC 时在 autofac 中配置生命周期范围

    我目前正在使用 AutoFac 作为我们的 ServiceStack Web 服务应用程序的 DI 容器 我能够配置接线和所有内容 但在阅读了有关范围的部分后 我不知道在注册我的组件时最好使用哪个范围 在我们的特定情况下 我认为 PerHt
  • 外部类与单例类

    假设我们使用 extern 关键字有一些外部链接 我有 在class1 cpp中 MyClass myClassVar NULL 构造函数初始化上述内容 析构函数删除 然后在class2 cpp和class3 cpp中有 extern My
  • Azure 云服务在应用程序池回收后停止运行

    我部署了一个 Azure 云服务 WebRole WebAPI 只有一个实例 我注意到 如果我等待一些空闲时间 没有 HTTP 请求 那么稍后服务就会死掉 并且对它的每个请求都会导致以下响应 Message An error has occ

随机推荐

  • 对象的 JVM 深度内存大小[重复]

    这个问题在这里已经有答案了 据我所知 众所周知的 Instrumentation Java 方法无法正确计算对象的深度大小 是否有可靠的方法在 JVM 上计算对象的正确深度大小 我正在考虑的用例是固定 或上限 内存大小的数据结构 即缓存 注
  • 如何显示多个 YouTube 视频而不重叠音频

    我有一个包含一些 YouTube 视频嵌入代码的页面 当用户在一个视频上单击 gt 播放 时 页面上的所有其他视频都需要暂停 否则它们的音频会与刚刚播放的新视频重叠 实现这一点最有效的方法是什么 好吧 这是我根据其他人的一些代码提出的解决方
  • postgreSQL中的@@Fetch_status

    我正在将数据库从 MS SQL Server 传输到 PostgreSQL 但此触发器有问题 CREATE TRIGGER added clients ON client FOR INSERT AS BEGIN DECLARE cursor
  • 如何强类型组合 mixin?

    我正在尝试使用函数组合通过 mixin 向对象添加行为 const pipe funcs args any gt any gt initial any gt funcs reduce object fn gt fn object initi
  • 快速,将文件发送到服务器

    我正在学习 swift 我使用下面的代码向服务器发送请求 它适用于简单的请求 我从服务器得到响应 我的问题是我无法将文件发送到服务器 code let parameters parameter let request NSMutableUR
  • 播放后重定向 html5 视频

    我有一个 html 5 视频 我删除了控制按钮并添加了 js 代码 以便用户在单击视频时播放视频 我需要做的是绑定一个额外的脚本 该脚本将在视频播放后重定向页面 而无需重新加载页面 下面是我的js代码 function play var v
  • 如何获取colspan的值

    我尝试过不同的 jQuery 方法 var num this attr colspan text var num this attr colspan val var num this td colspan val var num this
  • 在c#中将字符串转换为十进制

    我在使用decimal parse 将字符串转换为十进制值时遇到一些问题 这是我的代码行 fixPrice decimal Parse mItemParts Groups price Value Replace Replace Replac
  • 开发人员是否需要为在 Windows Azure Marketplace 上发布 SaaS 应用程序付费?

    目前我正在构建一个简单的 SaaS 驱动的 TMS 目的是在 Windows Azure Marketplace 中发布它 我无法找到任何定价 微软是否向开发者收取发布费用 是按月计算的吗 或者 Windows Azure 上托管的所有应用
  • OpenGL-OpenCL 互操作传输时间 + 位图纹理

    两部分问题 我正在开展一个学校项目 使用生命游戏作为实验 gpgpu 的工具 我使用 OpenCL 和 OpenGL 进行实时可视化 目标是让这个东西尽可能大 更快 经过分析 我发现帧时间主要由 CL 获取和释放 GL 缓冲区决定 并且时间
  • JavaScript 初学者遇到的引号问题

    我正在尝试从一本书 Jeremy McPeak 的 Beginner JavaScript 中学习 JS 但我坚持使用以下代码 html 中的结果是这样的 56 02 degrees centigrade is 56 as an integ
  • 如何分发带有依赖库的 Mac OS X?

    我有一个程序 特别是我的条目SO DevDays 倒计时应用挑战 https meta stackexchange com questions 20420 countdown app for devdays 21659 21659 它依赖于
  • 基于多个文件的存在激活 Maven 配置文件

    我想根据多个文件的存在来激活配置文件 在下面的示例中 如果两个文件都被激活 我希望配置文件被激活my marker and another marker exists
  • 包恢复失败。回滚包更改

    当我尝试在 VS2017 中为 asp net core 安装任何 nuget 包时 它不断显示每个 包的 包恢复失败 回滚包更改 您可以执行以下步骤 VS Tools Options Nuget 包管理器 General 清除所有 Nug
  • Gradle编译:如何从依赖关系中识别组和模块?

    有时 我不想添加所有依赖项 因此我需要从依赖项中排除一些依赖项 例如 compile com google http client google http client 1 20 0 exclude group org apache htt
  • ODBC Teradata 驱动程序 HY001 内存分配错误。什么意思?

    我正在使用 python 脚本 该脚本使用 teradata python 模块和类似于下面的脚本将一批数据插入 Teradata 它使用 ODBC 连接 偶尔会出现以下错误 HY001 Teradata ODBC Teradata Dri
  • 将 MutationGroup 流式传输到 Spanner 中

    我正在尝试使用 SpannerIO 将 MutationGroups 流式传输到扳手中 目标是每 10 秒写入新的 MuationGroup 因为我们将使用 Spanner 来查询近期 KPI 当我不使用任何 Windows 时 出现以下错
  • 我怎样才能记住所有CSS简写?

    我从未忘记并且总是使用速记margin and padding因为它是顺时针运行的 但是你怎么记得其他的呢 你是否尽可能使用 CSS 简写 记住不同简写的最佳方法是什么 Update 我还发现了 2 个很好的速记备忘单 Png http w
  • IntelliJ IDEA 在调试时停留在“收集数据”

    我正在使用 IntelliJ IDEA 来调试远程 tomcat 应用程序 之前效果很完美 然而 最近一段时间 它总是卡在 收集数据 上 尽管数据很小 我在这个网站上搜索过 并尝试过 Intellij IDEA在调试模式下非常慢 在正常模式
  • Autofac SingleInstance 不工作

    我正在尝试获得一个与 Autofac 一起使用的 Singleton 实例 我正在用 Winforms 做一个准 mvvm 类型的事情 只是一个实验 所以不要挂断它 但我正在尝试让我的模型成为单个实例 并在命令中引用 此处的 IComman