2017-07-17 80 views
-6

我有兩個派生類。在相同結構但不同類型的對象之間傳輸數據

public Class A : BaseClass 
{ 
    public static somecomplextype Criteria { get; set; } 
} 

public Class B : BaseClass 
{ 
    public static somecomplextype Criteria { get; set; } 
} 

我只能訪問派生類而不是基類。

現在我有另一個類

public Class SomeClass 
{ 
    public SomeClass() 
    { 
     //I need a logic for the below to happen... 
     B.Criteria = (B) A.Criteria //throws invalid cast exception 
    } 
} 

問題是A.Criteria之間傳送數據到B.Criteria ...

由於投拋出異常..

我想知道是否有另一種方式。

+0

不,你不能把'A'的一個子類型投射到'B'的另一個子類型。你可以創建一個構造函數來從子類型'B'的對象中產生一個子類型爲'A'的對象,反之亦然,但是我可以發現這種設計的用例很少。確保你知道你在做什麼,並問自己(或軟件工程/編程SE)**爲什麼你決定這麼做,是否有更好的架構解決方案? –

+0

什麼演員?如何解決數據傳輸問題? – itsme86

+0

如果您希望將它們的實例對待相同,請不要創建兩個相同的類型。只需要一種類型即可。 – Servy

回答

0

我指定的問題相當簡單。我只是想將數據從一個派生類型對象轉移到另一個派生類型相同的對象,因爲我沒有訪問基類的權限。

由於對象很大,我需要爲它們之間的數據傳輸編寫一個長的數據傳輸邏輯。

所以我正在尋找一個簡單的解決方案就像一個演員(這不會在我的情況下工作)。

我發現了一個迂迴的方式來在它們之間傳輸數據。在此處粘貼代碼FWIW

如果A.CriteriaB.Criteria是對象,我希望將A的數據傳遞給B.完成上述所有建議後。我想出了一條路。

string json = JsonConvert.SerializeObject(A.Criteria); 
return JsonConvert.DeserializeObject(json, typeof(B.Criteria)) as B.Criteria; 
相關問題