我在WPF应用程序上使用caliburnMicro。
除了作为UI应用程序之外,它还是Inter Process通信服务器(我们在命名管道上使用WCF
。)
每个服务主机都注册为singleton(container.RegisterSingleton(typeof (IMyServiceHost), null, typeof (MyServiceHost));
)。
IMyserviceHost
的每个实现都包含WCF
ServiceHost
属性。
在当前状态下,每个服务主机对象请求必须在解析对象后在代码中打开通道。
我希望每个服务主机请求解析将触发Open()
属性的ServiceHost
以打开服务器端通道(这是来自IPC服务器端)。
是否可以使用现有的Caliburn Micro方法?
注册码:
container.RegisterSingleton(typeof (IMyServiceHost), null, typeof (MyServiceHost));
然后解决代码:
//Resolve the object
var serviceHost = IoC.Get<IMyServiceHost>();
//Then open the channel
serviceHost.Instance.Open();
答案 0 :(得分:1)
在SimpleContainer
文档中查看处理程序注册。这允许您注册一个函数。基本上你可以注册这样的东西:
() => {
var serviceHost = IoC.Get<IMyServiceHost>();
serviceHost.Instance.Open();
return serviceHost;
}
这假设您已经以正常方式添加了IMyServiceHost
,这样我们可以通过激活或不激活来请求它。
另一种选择是全球化。在同一文档的高级功能中,您可以设置一个全局激活挂钩,可以对任何对象进行高级初始化,只需进行类型检查,如果是IMyServiceHost
,则在返回对象之前调用所需的方法。 / p>