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