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。提示和代码片段会很有帮助。感谢您的关注。

4

2 回答 2

1

GetService 被标记为已过时。您有 2 个选项:

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 是推荐的方法。

于 2014-01-17T11:06:31.820 回答
0

感谢您的回答。我还在“Catel.Examples”解决方案中找到了一个很好的例子,链接下载

于 2014-01-24T08:56:39.227 回答