2010-01-27 71 views
2

我有一个叫做“Channel”的模型,它有一堆字符串属性。绑定没有控制器/ http.context的模型

我从我的数据源获取数据,它返回一个哈希表。该表的键匹配我的模型的属性名称。

如何将哈希表自动绑定到Channel模型?

来自ASP.NET MVC的绑定器似乎这样做,但您需要在具有上下文的控制器中使用它。我不想在获取数据时将上下文传递到我的存储库中以使其工作。 (虽然我想我可以的,如果需要的话)

+0

反射选项?这就是.net的方式。 – 2010-01-27 04:46:47

+0

毫无疑问,我只是不想从头开始编写它 - 必须有一个现有的绑定器:) – typemismatch 2010-01-27 04:49:00

回答

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分钟。

相关问题