统一:有几个实现并决定使用哪个
Unity: Have several implementation and decide which one to use
我必须尽快启动一个 WPF 应用程序,我们决定使用 PRISM + Unity 来帮助我们完成架构。
我有一个问题。我们将有一个 DataRepository
,它实现了一个 IDataRepository
。
问题是我们之后还会有一个 OfflineDataRepository
实现相同的接口。
我们希望能够根据应用程序的状态 (online/offline) 为 return 的实现提供一些逻辑。
我如何使用 Prism+Unity 实现这一点?
您可以使用 InjectionFactory 来完成您想要的。这将在每次需要实例化 IDataRepository 时执行。
container.RegisterType<IDataRepository, DataRepository>("Online");
container.RegisterType<IDataRepository, OfflineDataRepository>("Offline");
container.RegisterType<IDataRepository>(new InjectionFactory(c => {
var connectivityStatus = /*TODO: logic to determine if online*/
? "Online"
: "Offline";
return c.Resolve<IDataRepository>(connectivityStatus);
});
我必须尽快启动一个 WPF 应用程序,我们决定使用 PRISM + Unity 来帮助我们完成架构。
我有一个问题。我们将有一个 DataRepository
,它实现了一个 IDataRepository
。
问题是我们之后还会有一个 OfflineDataRepository
实现相同的接口。
我们希望能够根据应用程序的状态 (online/offline) 为 return 的实现提供一些逻辑。
我如何使用 Prism+Unity 实现这一点?
您可以使用 InjectionFactory 来完成您想要的。这将在每次需要实例化 IDataRepository 时执行。
container.RegisterType<IDataRepository, DataRepository>("Online");
container.RegisterType<IDataRepository, OfflineDataRepository>("Offline");
container.RegisterType<IDataRepository>(new InjectionFactory(c => {
var connectivityStatus = /*TODO: logic to determine if online*/
? "Online"
: "Offline";
return c.Resolve<IDataRepository>(connectivityStatus);
});