我有一个名为“Channel”的模型,它有一堆字符串属性。
我从返回哈希表的数据源中获取数据。此表的键与我的模型的属性名称匹配。
如何将哈希表自动绑定到 Channel 模型?
来自 ASP.NET MVC 的绑定器似乎可以做到这一点,但您需要在具有上下文的控制器中使用它。我不想将上下文传递到我的存储库中以使其在获取数据时工作。(虽然我想如果需要我可以)
我有一个名为“Channel”的模型,它有一堆字符串属性。
我从返回哈希表的数据源中获取数据。此表的键与我的模型的属性名称匹配。
如何将哈希表自动绑定到 Channel 模型?
来自 ASP.NET MVC 的绑定器似乎可以做到这一点,但您需要在具有上下文的控制器中使用它。我不想将上下文传递到我的存储库中以使其在获取数据时工作。(虽然我想如果需要我可以)
该方法本身是如此微不足道,以至于您不能指望它的“现有”解决方案:
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 分钟。