统一:有几个实现并决定使用哪个

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);            
});