2012-12-04 82 views
3

错误:指定的类型无法识别

{"The specified type was not recognized: 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; 
    } 
} 

其他有用的代码:

[XmlInclude(typeof(VitalsPlugin))] 
public class Plugin 
{ 
} 

public class VitalsPlugin 
{ 
} 

回答

6

多少修修补补之后我碰到xsi:typedefinition跑去。在读完定义之后,我意识到这个类型指定了派生类。我更新了代码到

public class VitalsPlugin: Plugin 
{ 
} 

它工作。