在运行时反序列化对象类型

时间:2012-12-26 13:49:07

标签: c# casting windows-phone-8

假设我有这个类层次结构:

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

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

2 个答案:

答案 0 :(得分:2)

你能不能只使用?

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

答案 1 :(得分:2)

最简单的方法是使用as关键字投射它并检查结果:

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

您也可以使用is关键字。