我們最近引入了一個全新的數據模型,它與邏輯結構的角度不同於我們當前的模型。我們還將模型的語言從德語改爲英語,因爲我們希望將模型結構作爲XML打開給我們的客戶。模型轉換覆蓋率
爲了能夠轉換模型,我們實現了一個顯式轉換,它將新模型中不同類的所有屬性基本匹配到舊模型中。
像這樣:
private OldModel Convert(NewModel src)
{
var dst = new OldModel();
dst.Prop1 = src.SomeOtherProp
dst.Prop2 = Convert(src.ComplexProp);
//....
return dst;
}
現在,我們要確保,所有的新模型的屬性被寫入舊模式的覆蓋範圍和測試目的。我們也希望確保我們不會遺忘任何財產,並且保證對於未來的模型擴展,我們不會忘記財產。
我的想法是解析代碼文件,提取從新模型讀取的所有屬性,使用反射在新模型上運行,並將其與其中的實際屬性進行比較。
這個解決方案感覺不像一個好的:-)有什麼建議嗎?
我感謝任何幫助!
如果你用反射做了它,你必須添加一些映射信息(大概是通過屬性),所以你知道要比較哪些東西('Prop1'和'SomeOtherProp'等)。就個人而言,我認爲我只是在單元測試中使用常規代碼,除非我將這些屬性用於實際轉換本身。 –
這聽起來像是你在編寫轉換時應該做的單元測試(使用適當的TDD:一步一步,屬性屬性),而不是在你寫完之後。 – Nailuj
@MarcGravell現在我只想確保,所有屬性都可以使用/從新模型中讀取 – derape