我试图让Singleton实例使用Autofac.我正在使用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();
Run Code Online (Sandbox Code Playgroud)
现在,Command将ICalculationsModel作为构造函数参数.但是,当我在传递给Command的Model中设置一个值时,该值不会出现在已使用CalculationsView设置的模型中.尽管调用了"singleInstance"方法,但似乎命令和视图正在传递CalculationsModel的不同实例.我错过了什么吗?为什么会这样?
我们今天遇到了类似的问题,这似乎是问这个问题的唯一帖子,所以我想我会分享我们的经验,希望能帮助别人.最后,它在我们眼前是正确的,当然它们通常是最难解决的问题:-).
在我们的场景中,我们是:
这些方面的东西:
var cb = new ContainerBuilder();
cb.RegisterType<FileBasedConfigurationProvider>()
.As<IConfigurationProvider>()
.SingleInstance();
cb.RegisterAssemblyTypes(typeof(MailProvider).Assembly)
.Where(t => !t.IsAbstract && t.Name.EndsWith("Provider"))
.AsImplementedInterfaces();
Run Code Online (Sandbox Code Playgroud)
愚蠢的是,我们没有想到/意识到它与FileBasedConfigurationProvider第一个集合MailProvider在一起,所以第二个注册调用基本上覆盖了第一个; 因此,SingleInstance"没有工作".
希望能帮助别人出去!
| 归档时间: |
|
| 查看次数: |
6180 次 |
| 最近记录: |