我想允许用户指定我的WPF应用程序应连接到哪些服务。在当前的设置中,我正在使用存储库模式,并在启动时将单个服务注入存储库:
public MyRepository(IDataContext service)
{
_service = service;
_service.DataReceived += ServiceOnDataReceived;
}
我现在要做的是更改此设置以允许用户指定在运行时注入存储库的服务(请注意,所有服务都发送相同类型的数据)。
有没有人建议如何实现这一目标?
答案 0 :(得分:0)
如何创建IDataContextContainer,如下所示:
public interface IDataContextContainer
{
event Action DataContextChanging;
event Action DataContextChanged;
IDataContext Current { get; }
}
在构造函数中接收此函数,您可以订阅Current上的事件,并订阅DataContextChanged事件(在datacontext更改后触发),将存储库更新为当前服务,以及DataContextChanging(在datacontext更改之前触发) ,从旧datacontext的事件中取消订阅存储库。