C \ # Object 의 각 속성 을 옮 겨 다 니 며 List 범 형 끼 워 넣 기 를 포함 합 니 다.
솔 루 션: model 의 각 속성 을 옮 겨 다 니 며 NULL 일 때 값 을 부여 합 니 다. 2. 범 형 List 의 끼 워 넣 기 를 지원 합 니 다.
전제조건: model 의 값 은 이 몇 가지 뿐 입 니 다. List, string, 다 층 끼 워 넣 기.
그래서 다음 과 같은 코드 를 써 서 속성 을 옮 겨 다 니 며 많은 문제 가 발생 했 습 니 다. 초고, 임시 사용, 뒤에 보완 되 었 습 니 다.
///
/// model null , null ""。。 string , APP。 chj 2015-5-7 17:39:21
///
///
///
///
public static object CJRemoveNULLByRecursive(object obj)
{
Type t = obj.GetType();
var typeArr = t.GetProperties();
object tempItem;// 。
if (obj != null )
{
foreach (var pi in typeArr)
{
//
if (pi.PropertyType == typeof(string))
{
if (pi.GetValue(obj, null)==null)
{
pi.SetValue(obj, "", null);
}
}
// List , , 。
else if(pi.PropertyType.IsGenericType||pi.PropertyType.IsArray||pi.PropertyType.IsClass)//.GetType()=typeof(Nullable))
{
var paras= pi.GetIndexParameters(); //
if (paras.Count()> 0)
{
int i = 0;
tempItem = pi.GetValue(obj, new object[] { 0 });
while (tempItem!=null)
{
pi.SetValue(obj, CJRemoveNULLByRecursive(tempItem), new object[] { i });
i++;
try
{
tempItem = pi.GetValue(obj, new object[] { i });
}
catch (Exception)
{
break;
}
}
}
else
{
pi.SetValue(obj, CJRemoveNULLByRecursive(pi.GetValue(obj, null)), null);
}
}
}
}
else
{
return "";
}
return obj;
}
여러 겹 으로 끼 워 넣 을 수 있 기 때문에 재 귀 를 사용 합 니 다.
임시 방안 은 여기에 두 고, 뒤에 비정 기적 으로 보완 중...
다음으로 전송:https://www.cnblogs.com/sword85/p/4490975.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.