铸造课程

use*_*618 0 c# polymorphism casting

我有2个班:

公共课ClassA

公共类ClassB(来自另一个名称空间):ClassA

我在ClassA使用方法

public static ClassA Deserialize(string path)
{
ClassA classA;

//classA=code...

return classA;
}
Run Code Online (Sandbox Code Playgroud)

我在classB调用这个方法

public void DoSomething()
{
ClassB classB=(ClassB)ClassA.Deserialize("c:\directory\file.xml);
}
Run Code Online (Sandbox Code Playgroud)

方法反序列化工作,但我得到错误,勇士将ClassA强制转换为ClassB.

怎么处理这个?

 public static ClassA DeserializeFromXml(string path)
        {

 XmlSerializer s = new XmlSerializer(typeof(ClassA));
            ClaasA h;

            TextReader r = new StreamReader(path);


                h = (ClassA)s.Deserialize(r);

                r.Close();

                return h;
}
Run Code Online (Sandbox Code Playgroud)

也许有反序列化的东西(字符串路径,类型objectType)??

如果有必要,我可以更改方法反序列化

Pre*_*gha 6

A 不是 B. B A

(ClassB)something_that_is_A除非是B或其衍生物,否则无法完成.