2013-07-11 42 views
1

我正在使用WCF执行REST服务,使用JSON消息格式。我有一个方法应该采取不同类型的参数(但派生形式基本类)。我想知道在这种情况下使用扩展类与转换运算符是否是一种好方法?WCF REST JSON参数多态性

(ommiting DataContractDataMember等)

class ClassOne 
    { 
     public string Name { get; set; } 
    } 

    class ClassTwo : ClassOne 
    { 
     public int A { get; set; } 
    } 

    class ClassThree : ClassOne 
    { 
     public int B { get; set; } 
    } 

    class ClassExtended 
    { 
     public string Name { get; set; } 

     public int A { get; set; } 

     public int B { get; set; } 

     public static implicit operator ClassTwo(ClassExtended extended) 
     { 
      return new ClassTwo() 
      { 
       Name = extended.Name, 
       A = extended.A 
      }; 
     } 

     public static implicit operator ClassThree(ClassExtended extended) 
     { 
      return new ClassThree() 
      { 
       Name = extended.Name, 
       B = extended.B 
      }; 
     } 
    } 

    void Test(ClassExtended extended) 
    { 
     // using as ClassThree here 
    } 
+0

您是否得到了正常工作? – ashic

回答

0

虽然我还没有在WCF与RESTful服务使用它,我们使用knowntypes所有的时间来处理我们的DataContracts

多态性

这是链接更多信息: http://msdn.microsoft.com/en-us/library/ms730167.aspx

+0

无法正常工作。当我尝试将参数转换为派生类时,有一个'InvalidCastException'。如果我标记基类'抽象'我得到一个错误'不能创建一个抽象类'。 – ChruS