P.B*_*key 3 c# xml serialization xml-serialization
错误:
{"无法识别指定的类型:name ='VitalsPlugin',namespace ='',at."}
码:
public class SimpleSerializer
{
static void Main()
{
string xml = "<Plugin xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"VitalsPlugin\" ID=\"eaded5f3-7019-47b9-8f9f-e7c1879774f4\"><CopyForwardChecked>true</CopyForwardChecked></Plugin>";
StringReader reader = new StringReader(xml);
var result = Deserialize(reader);
}
static Plugin Deserialize(TextReader xml)
{
XmlSerializer xsr = new XmlSerializer(typeof(Plugin), new Type[] {typeof(VitalsPlugin)});
Plugin result = xsr.Deserialize(xml) as Plugin;
return result;
}
}
Run Code Online (Sandbox Code Playgroud)
其他有用的代码:
[XmlInclude(typeof(VitalsPlugin))]
public class Plugin
{
}
public class VitalsPlugin
{
}
Run Code Online (Sandbox Code Playgroud)
很多修修补补之后我碰到一个跑定义的xsi:type.在阅读定义后,我意识到这种类型指定了派生类.我将代码更新为
public class VitalsPlugin: Plugin
{
}
Run Code Online (Sandbox Code Playgroud)
它的工作原理.