2014-01-17 24 views
1

我試圖獲取catel的掛起,但遇到問題。 嘗試「通過屬性傳遞」會產生編譯錯誤。從文檔中嘗試「通過屬性進行消息傳遞」

'Catel.MVVM.ViewModelBase.GetService(object)'已過時:'不再推薦使用GetService。注入所有依賴項(TypeFactory完全支持)>將在4.0.0版中被刪除。

private void OnCmdExecute() 
    { 
     var mediator = GetService<IMessageMediator>(); 
     mediator.SendMessage("Test Value"); 
    } 

    [MessageRecipient] 
    private void ShowMessage(string value) 
    { 
     var messageService = GetService<IMessageService>(); 
     messageService.Show(value); 
    } 

我使用的是3.9。 提示和代碼片段應該是很好的幫助。 感謝您的關注。

回答

1

GetService被標記爲過時。你有兩個選擇:

1)如果你使用的是視圖模型,乾脆讓服務在構造函數中注入:

private readonly IMessageMediator _messageMediator; 
private readonly IMessageService _messageService; 

public MyViewModel(IMessageMediator messageMediator, IMessageService messageService) 
{ 
    Argument.IsNotNull(() => messageMediator); 
    Argument.IsNotNull(() => messageService); 

    _messageMediator = messageMediator; 
    _messageService= messageService; 
} 

2)使用GetDependencyResolver擴展方法:

var dependencyResolver = this.GetDependencyResolver(); 
var messageMediator = dependencyResolver.Resolve<IMessageMediator>(); 

解決方案1是推薦的方法。

0

感謝您的回答。 我還在「Catel.Examples」解決方案中找到了一個很好的例子,link to download

相關問題