2010-01-27 70 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分鐘。

相關問題