1

私は猫のコツをつかもうとしていますが、問題があります。「属性によるメッセージング」を試みると、コンパイル エラーが発生します。

'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 に答える