运行时反序列化的对象类型转换

本文关键字:类型转换 对象 反序列化 运行时 | 更新日期: 2023-09-27 17:49:30

假设我有这样的类层次结构:

public abstract class Base {};
public class Child1 : Base {};
public class Child2 : Base {};

在某些时候,我在IsolatedStorageSettings.ApplicationSettings中持久化一个继承类,然后将其作为object返回。我怎样才能知道它是Child1还是Child2,并在运行时将其类型转换为正确的类型?

运行时反序列化的对象类型转换

你可以不直接用它吗?

if(myobject is Child1)
    var child1 = (Child1)myobject;
else if (myobject is Child2)
    ....

最简单的方法是使用as关键字进行强制转换并检查结果:

Base child;
child = mysteryObject as Child1;
if(child == null)
{
    // mysteryObject is Child2
    child = mysteryObject as Child2;
}
else
{
    // mysteryObject is Child1
}

您也可以使用is关键字来代替。