我正在構(gòu)建一個(gè) WPF 應(yīng)用程序并使用 Autofac 作為 IoC 容器。這個(gè)場景有點(diǎn)難以描述,但我會(huì)嘗試在下面給出相關(guān)的代碼:我的應(yīng)用程序引導(dǎo)程序包含以下代碼以在我的應(yīng)用程序中注冊視圖模型:builder.RegisterAssemblyTypes(assemblySource) .Where(type => type.Name.EndsWith("ViewModel")) .Where(type => !string.IsNullOrWhiteSpace(type.Namespace) && type.Namespace.Contains("ViewModels")) .AssignableTo<INotifyPropertyChanged>() .AsSelf() .InstancePerDependency();(請注意InstancePerDependency()我必須進(jìn)行的調(diào)用,因?yàn)槲绎@示了許多視圖實(shí)例)然后我有以下代碼來注冊開放泛型的實(shí)現(xiàn)者:builder.RegisterAssemblyTypes(assemblySource) .AsClosedTypesOf(typeof(INotificationHandler<>)) .AsSelf() .SingleInstance();為了避免將容器傳遞給我的事件調(diào)度程序,我將它傳遞給一個(gè)委托,如下所示:builder.Register<ServiceFactory>(ctx => { return t => Container.Resolve(t ); });最后一點(diǎn)代碼給我?guī)砹艘粋€(gè)問題:它導(dǎo)致實(shí)現(xiàn)INotificationHandler接口的 ViewModels在每次調(diào)用時(shí)都創(chuàng)建實(shí)例,而我只需要解析一次實(shí)例,而實(shí)現(xiàn)這個(gè)通用接口的 ViewModels 將只有一個(gè)實(shí)例在整個(gè)應(yīng)用程序中創(chuàng)建。問題是:如何讓 Autofac 解析實(shí)現(xiàn)INotificationHandler<T>接口的 ViewModel 的單個(gè)實(shí)例,同時(shí)保持其他 ViewModel 的創(chuàng)建PerDependency?
- 1 回答
- 0 關(guān)注
- 294 瀏覽
添加回答
舉報(bào)
0/150
提交
取消