2010-01-27 3 views
2

У меня есть модель под названием «Канал», которая имеет кучу свойств строк.Привязка модели без контроллера/http.context

Я извлекаю данные из своего источника данных, который возвращает хеш-таблицу. Ключи этой таблицы соответствуют именам свойств моей модели.

Как я могу автоматически привязать хэш-таблицу к модели канала?

Связывание с ASP.NET MVC похоже на это, но вы должны использовать его в контроллере с контекстом. Я не хочу передавать контекст в свой репозиторий, чтобы он работал при извлечении данных. (Хотя я предполагаю, что я могу, если это необходимо)

+0

Является ли отражение вариантом? Это путь .net. –

+0

Без сомнения, я просто не хочу писать это с нуля - там должно быть существующее связующее :) – typemismatch

ответ

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 минут.

Смежные вопросы