2013-07-11 40 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