将json对象动态转换为特定的C#类对象

时间:2014-01-14 11:01:50

标签: c# asp.net-mvc c#-4.0 dynamic

我收到一个对象,根据参数,我需要将其转换为特定的C#对象。

我可以替换以下功能吗?

object objectTobeParsed;
switch (formId)
{
     case 1: var myObject = objectTobeParsed as MyClass;
     /* other cases here */

     /* other cases here */

     /* other cases here */

}

如您所见,有很多切换案例。

谢谢, 阿尼什。

2 个答案:

答案 0 :(得分:0)

我认为你没有这么多替代开关/案例陈述。

在您的情况下,为每个案例执行的语句是特定的,因为您必须强制转换为精确的类。在我看来,没有更多的事情要做,除非你必须强制转换为你的对象的类链接到一个公共接口,也许你可以使用多态。

this answer中指出的问题不是开关/外壳的长度,而是开关的次数。如果语句重复多次,那么您可能需要检查架构的设计。

答案 1 :(得分:0)

这正是OOP试图阻止的代码类型。

目前阻止你只是传入一个基类/接口,并进一步使用它,而没有转换为更具体的类?

解决方法是使用T4 Text Templates并从Dictionary of Type和Type生成切换代码。