Rob*_*ert 12 c# xml serialization
如何序列化"类型"?
我想序列化为XML一个具有属性的对象,该属性是一种对象.这个想法是,当它被反序列化时,我可以创建一个这种类型的对象.
public class NewObject
{
}
[XmlRoot]
public class XmlData
{
private Type t;
public Type T
{
get { return t; }
set { t = value; }
}
}
static void Main(string[] args)
{
XmlData data = new XmlData();
data.T = typeof(NewObject);
try
{
XmlSerializer serializer = new XmlSerializer(typeof(XmlData));
try
{
using (FileStream fs = new FileStream("test.xml", FileMode.Create))
{
serializer.Serialize(fs, data);
}
}
catch (Exception ex)
{
}
}
catch (Exception ex)
{
}
}
Run Code Online (Sandbox Code Playgroud)
我得到此异常:"不期望使用类型ConsoleApplication1.NewObject.使用XmlInclude或SoapInclude属性指定静态未知的类型."
我在哪里放[XmlInclude]?这甚至可能吗?
The*_*ean 18
Typeclass无法序列化,因为System.RuntimeType我们的代码无法访问它,它是一个内部CLR类型.您可以使用类型的名称来解决此问题,如下所示:
public class c
{
[XmlIgnore]
private Type t;
[XmlIgnore]
public Type T {
get { return t; }
set {
t = value;
tName = value.AssemblyQualifiedName;
}
}
public string tName{
get { return t.AssemblyQualifiedName; }
set { t = Type.GetType(value);}
}
}
Run Code Online (Sandbox Code Playgroud)
XML 序列化仅将对象的公共字段和属性值序列化到 XML 流中。XML 序列化不包含类型信息。例如,如果 Library 命名空间中存在一个 Book 对象,则不能保证它将被反序列化为相同类型的对象。
| 归档时间: |
|
| 查看次数: |
20421 次 |
| 最近记录: |