C# 统一:有几个实现,并决定使用哪一个
我很快就要开始一个WPF应用程序了,我们决定使用PRISM+Unity来帮助我们进行一点架构设计 我有个问题。我们将有一个C# 统一:有几个实现,并决定使用哪一个,c#,wpf,unity-container,prism,C#,Wpf,Unity Container,Prism,我很快就要开始一个WPF应用程序了,我们决定使用PRISM+Unity来帮助我们进行一点架构设计 我有个问题。我们将有一个DataRepository,它实现了一个IDataRepository 问题是,在那之后,我们还将拥有一个离线数据存储库,它实现相同的接口 我们希望能够根据应用程序的状态(在线/离线)给出一些返回实现的逻辑 我怎样才能用Prism+Unity实现这一点呢?你可以用一个简单的方法来完成你所追求的目标。每次需要实例化IDataRepository时,都会执行此操作 contai
DataRepository
,它实现了一个IDataRepository
问题是,在那之后,我们还将拥有一个离线数据存储库
,它实现相同的接口
我们希望能够根据应用程序的状态(在线/离线)给出一些返回实现的逻辑
我怎样才能用Prism+Unity实现这一点呢?你可以用一个简单的方法来完成你所追求的目标。每次需要实例化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);
});
container.RegisterType(“联机”);
container.RegisterType(“脱机”);
RegisterType(新注入工厂(c=>{
var connectivityStatus=/*TODO:确定是否联机的逻辑*/
?“在线”
:“离线”;
返回c.Resolve(connectivityStatus);
});
Ok,这是我们在何时请求实例时计算的?是的,每次解析实例时都会运行指定给InjectionFactory构造函数的委托。