C# 绑定没有控制器/http.context的模型

C# 绑定没有控制器/http.context的模型,c#,asp.net-mvc,models,C#,Asp.net Mvc,Models,我有一个名为“Channel”的模型,它有一系列字符串属性 我从返回哈希表的数据源获取数据。此表的键与我的模型的属性名称匹配 如何将哈希表自动绑定到通道模型 ASP.NET MVC中的绑定器似乎可以做到这一点,但您需要在具有上下文的控制器中使用它。我不想在获取数据时将上下文传递到我的存储库以使其工作。(虽然我想如果需要的话我可以)这个方法本身非常简单,你不能指望它有“现有”的解决方案: public static T Bind<T>(IDictionary<string, st

我有一个名为“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]);
   }
}
公共静态T绑定(IDictionary散列,T通道)
{
foreach(散列中的变量项)
{
var prop=typeof(T).GetProperty(item.Key);
prop.SetValue(通道,Convert.ChangeType(item.Value,prop.PropertyType),新对象[0]);
}
}
这就是你需要的一切。现在,您可以在不使用任何控制器的情况下单独使用此方法,或者编写使用它的模型绑定器


使用嵌套属性可以做更多的工作(您没有说需要),但使用递归进行编写还需要5分钟。

反射是一种选择吗?这就是.net的方式。毫无疑问,我只是不想从头开始写它——必须有一个现有的活页夹:)