Request에서 사용할 수 있는 모델을 자동으로 생성하는 보조 클래스입니다.Form 또는 Request.QueryString에서 Model 자동 생성
2585 단어 request
public class Person<T>
{
public string name;
public bool sex;
public int age;
public DateTime birthday;
public DateTime? now;
public T desc;
}
//main
var NVC = new NameValueCollection();
NVC.Add("name", " ");
NVC.Add("sex", "1");
NVC.Add("age", "23");
NVC.Add("birthday", "1989-06-27");
NVC.Add("now", "2011-12-08");
NVC.Add("Desc", ".net ");
var person = NVC.ModelGeneration<Person<string>>();
以下为扩展方法
public static class ModelGenerationExtension
{
/// <summary>
///
/// </summary>
public static T ModelGeneration<T>(this NameValueCollection nvc)
{
var type = typeof(T);
var obj = (T)Activator.CreateInstance(type);
var bindflag = System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.IgnoreCase | System.Reflection.BindingFlags.GetField;
var fileds = type.GetFields(bindflag);
foreach (var filed in fileds)
{
var val = nvc[filed.Name];
var fType = filed.FieldType;
if (fType.IsGenericType && fType.GetGenericTypeDefinition() == typeof(Nullable<>))
{
//
fType = fType.GetGenericArguments()[0];
}
try
{
if (typeof(bool) == fType && val.ToLower() != "true" && val.ToLower() != "false")
if (val == "1")
val = "true";
else
val = "false";
type.GetField(filed.Name, bindflag).SetValue(obj, Convert.ChangeType(val, fType));
}
catch
{
type.GetField(filed.Name, bindflag).SetValue(obj, Activator.CreateInstance(fType));
}
}
return obj;
}
}
물론 이렇게 적용할 수 있다.
var model= Request.Form.ModelGeneration<당신의 유형>();
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
java에서 HttpRequest Header를 가져오는 몇 가지 방법이 포털은 모든 응용 프로그램의 입구이다. 사용자가 포털에 로그인한 후에 다른 시스템에 들어가면 유사한 단일 로그인(SSO)이 필요하다.각 서브시스템에 들어갈 때 다시 로그인할 필요가 없다. 물론 유사한 기능은 전문...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.