2
문자열 속성이 많은 "채널"이라는 모델이 있습니다.컨트롤러/http.context없이 모델 바인딩
해시 테이블을 반환하는 데이터 소스에서 데이터를 가져옵니다. 이 테이블의 키는 내 모델의 속성 이름과 일치합니다.
어떻게 해시 테이블을 채널 모델에 자동 바인딩 할 수 있습니까?
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]);
}
}
:
반사가 옵션입니까? 그게 .net 방법입니다. –
의심의 여지가, 난 그냥 처음부터 그것을 쓰고 싶지 않아 - 거기에 기존 바인더가 있어야합니다 :) – typemismatch