【发布时间】:2013-03-21 07:47:17
【问题描述】:
我试图找到一种简单的方法来序列化任何对象,以便只包含 immediate 属性及其“ToString”值。对于来自 DataContext 的对象,我希望能够忽略属性的属性(即,如果属性是复杂对象,也不要序列化该对象)。如果未加载属性,这一点尤其重要,因为它会导致错误“在释放对象后无法访问”...
我创建了以下内容,但当它尝试访问未在原始 datacontext 调用中加载的属性时失败。
string typeString = o.GetType().Name;
StringBuilder xml = new StringBuilder();
xml.AppendFormat("<{0}>\r\n", typeString);
foreach (PropertyInfo property in o.GetType().GetProperties())
{
var propertyValue = property.GetValue(o, null);
if (property.GetType() != typeof(System.Data.Linq.Binary) && property.PropertyType.Name != "EntitySet`1" && property.GetCustomAttributes(typeof(XmlIgnoreAttribute), true).Count() == 0)
{
xml.AppendFormat("<{0}>{1}</{0}>\r\n", property.Name, propertyValue);
}
}
xml.AppendFormat("</{0}>", typeString);
return xml.ToString();
【问题讨论】:
标签: xml linq linq-to-sql serialization datacontext