2013-10-16 63 views
1

我在我的WPF應用程序上使用caliburnMicro。CaliburnMicro - 解決調用方法

除了作爲UI應用程序之外,它也是進程間通信服務器(我們在命名管道上使用WCF)。

每個服務主機都被註冊爲單例(container.RegisterSingleton(typeof (IMyServiceHost), null, typeof (MyServiceHost));)。

其中IMyserviceHost的每個執行保持WCFServiceHost屬性。

在當前狀態下,每個服務主機對象請求必須在解析對象後在代碼中打開通道。 我希望每個服務主機請求解析將觸發ServiceHost屬性的Open()以打開服務器端通道(這是來自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(); 

回答

1

看看在SimpleContainer文檔處理程序註冊。這允許你註冊一個func。從本質上講,你可以註冊這樣的事情:

() => { 
    var serviceHost = IoC.Get<IMyServiceHost>(); 
    serviceHost.Instance.Open(); 
    return serviceHost; 
} 

這會假設你已經以正常方式加入IMyServiceHost,這樣我們可以激活或不提出要求。

另一種選擇是在全球範圍內進行。在同一文檔的高級功能中,您可以設置一個全局激活掛鉤,它可以對任何對象進行高級初始化,只需進行類型檢查,如果它是IMyServiceHost,則在返回對象之前調用所需的方法。

+0

嘿Dean,這是我。我覺得可以自由地編輯你的答案來改進格式。很高興見到你回來。 –

+0

很高興回來:)父親傾向於接管你的生活。歡迎編輯,看起來好多了! – McDonnellDean

+1

恭喜,這只是一個微小的編輯:)。 –