2

我有一个名为“Channel”的模型,它有一堆字符串属性。

我从返回哈希表的数据源中获取数据。此表的键与我的模型的属性名称匹配。

如何将哈希表自动绑定到 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 回答