2

一連の文字列プロパティを持つ「Channel」というモデルがあります。

ハッシュ テーブルを返すデータ ソースからデータをフェッチします。このテーブルのキーは、モデルのプロパティ名と一致します。

ハッシュ テーブルをチャネル モデルに自動バインドするにはどうすればよいですか?

ASP.NET MVC のバインダーはこれを行うようですが、コンテキストを持つコントローラーで使用する必要があります。データをフェッチするときにコンテキストを機能させるために、リポジトリにコンテキストを渡したくありません。(必要に応じてできると思いますが)

4

1 に答える 1

1

メソッド自体は非常に単純であるため、「既存の」ソリューションを期待することはできません。

public static T Bind<T>(IDictionary<string, string> hash, T channel)
{
   foreach (var item in hash)
   {
        var prop = typeof(T).GetProperty(item.Key);
        prop.SetValue(channel, Convert.ChangeType(item.Value, prop.PropertyType), new object[0]);
   }
}

それはあなたが必要とするすべてです。これで、このメソッドをコントローラーなしでスタンドアロンで使用したり、それを使用するモデル バインダーを作成したりできます。

ネストされたプロパティを使用すると、さらに多くの作業が必要になる可能性があります (必要だとは言いませんでした) が、再帰を使用して記述するにはさらに 5 分かかります。

于 2010-01-27T09:06:02.217 に答える