1 回答

TA貢獻1796條經驗 獲得超10個贊
您只能獲得第一級屬性的已知類型。在您的代碼中,您只能獲取Debtor類型,但您還應該處理此屬性以獲取Address類型,例如通過遞歸。
private static string BatchItem_NFSerialization(INF Alldebtors)
{
Type t = Alldebtors.GetType();
var extraTypes1 = GetKnownTypes(Alldebtors);
using (MemoryStream ms = new MemoryStream())
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(t, extraTypes1);
serializer.WriteObject(ms, ((BatchItem_NF)Alldebtors));
var retVal = Encoding.Default.GetString(ms.ToArray());
return retVal;
}
}
private static IEnumerable<Type> GetKnownTypes(object property)
{
Type t = property.GetType();
var extraValues = t.GetProperties()
.Where(p => p.PropertyType.IsInterface && !p.PropertyType.IsGenericType)
.Select(p => p.GetValue(property, null))
.ToArray();
var extraTypes = extraValues.SelectMany(GetKnownTypes).ToArray();
return extraValues.Select(v => v.GetType()).Concat(extraTypes).ToArray();
}
- 1 回答
- 0 關注
- 235 瀏覽
添加回答
舉報