从文档中尝试“通过属性进行消息传递”

时间:2014-01-17 10:49:00

标签: catel

我正试图让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。 提示和代码片段应该是很好的帮助。 谢谢你的关注。

2 个答案:

答案 0 :(得分: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。

答案 1 :(得分:0)

感谢您的回答。 我还在“Catel.Examples”解决方案link to download

中找到了一个很好的例子