2014-01-14 30 views
0

我正在接收一個對象,並根據參數將其轉換爲特定的C#對象。將json對象動態地轉換爲特定的C#類對象

我可以替換下列功能嗎?

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

    /* other cases here */ 

    /* other cases here */ 

} 

正如你所看到的,有很多開關情況。

謝謝, Anish。

+0

最新的問題? – thumbmunkeys

+0

我只是想避免使用elegent c#代碼的冗長切換。 –

回答

0

我認爲你沒有太多的選擇開關/案例陳述。

在你的情況下,爲每個案件執行的陳述是特定的,因爲你必須投到一個精確的類。在我看來,沒有太多的工作要做,除非你必須投到你的對象的類連接到一個通用的接口,也許你可以使用多態。

this answer中指出的問題不是開關/外殼的長度,而是開關的次數。如果陳述重複了很多次,也許你必須檢查你的架構設計。

0

這正是OOP試圖阻止的代碼的類型。

什麼是目前阻止你只是傳入一個基類/接口,並進一步使用它,沒有轉換到一個更具體的類?

解決方法是使用T4 Text Templates並從int和Type字典中生成切換代碼。