将对象强制转换为表示为Type对象的类

时间:2014-07-01 10:33:26

标签: c# casting json.net

好吧我甚至不知道标题是否有意义,但我很难描述我需要做什么。那么看看示例plz。

我这样做:

(SportsParent)JsonConvert.DeserializeObject<SportsParent>(jsonObj);

但是,如果我想将类名“SportsParent”存储在字符串中,并从中创建一个Type对象,该怎么办?然后使用该Type对象进行强制转换。

类似的东西:

Type type = Type.GetType("myNanespace.SportsParent");
(type )JsonConvert.DeserializeObject<type >(jsonObj);

谢谢。

1 个答案:

答案 0 :(得分:0)

JsonConvert.DeserializeObject超载,接受Type。试试这个:

string typeName = "myNamespace.SportsParent";

Type type = Type.GetType(typeName);
object obj = JsonConvert.DeserializeObject(jsonObj, type);

然后,在你的代码后面......

if (obj is SportsParent)
{
    SportsParent sp = (SportsParent) obj;
    // do something with sp here
}
else if (obj is SomeOtherType)
{
    SomeOtherType sot = (SomeOtherType) obj;
    // handle other type
}
else
{
    throw new Exception("Unexpected type: " + obj.GetType().FullName);
}