运行时反序列化的对象类型转换
本文关键字:类型转换 对象 反序列化 运行时 | 更新日期: 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
关键字来代替。