0

MVC2を使用しています。

5 つのビュー モデルがあり、それぞれに異なるメッセージ プロパティがあり、DB から入力する必要があります。プロパティ名は、メッセージ タイプごとに異なります。

ビューモデルでは、メッセージをプルする必要があるタイプが利用可能です。

タイプが Welcome の場合、3 つのウェルカム メッセージを取得します。

各アクションから呼び出す汎用関数を書きたいと思います。このジェネリック関数は、渡されるオブジェクトとその型プロパティを調べ、このビュー モデルで指定されたメッセージ プロパティを入力します。どうすればこれを達成できますか? 私の行動から、メッセージの種類ごとに個別の関数を呼び出したくありません。

私は次のようなことをしようとしています:

public void GetMessage(object viewModel, bool isCheckMessages)
        {
            viewModel = (AnnualReportWelComeViewModel)viewModel;

        }

しかし、このインスタンスのビューモデルは、AnnualReportWelComeViewModel で指定されたプロパティを選択していません。

私はここでまっすぐに考えていますか、それとも必要以上に複雑にしていますか?

4

2 に答える 2

1

コードの問題は、型を変換するときに同じ変数を再利用していることです。あなたviewModelは型objectであり、それを別の型に変換しようとしても、それはobject. 次の行に沿って何かを試す必要があります。

public void GetMessage(object viewModel, bool isCheckMessages)
{
  var reportMessage = viewModel as AnnualReportWelComeViewModel;
  if (reportMessage != null)
  {
    // viewModel passed was of type AnnualReportWelComeViewModel
  }
}

この関数で可能な多くのタイプをチェックしたい場合は、次のviewModelようにすることができます。

public void GetMessage(object viewModel, bool isCheckMessages)
{
  if (viewModel is AnnualReportWelComeViewModel)
  {
     var reportMessage = viewModel as AnnualReportWelComeViewModel;
     // ...
  }
  else if (viewModel is MonthlyReportWelComeViewModel)
  {
     var reportMessage = viewModel as MonthlyReportWelComeViewModel;
     // ...
  }

}
于 2013-06-06T05:24:51.687 に答える