我有一個名爲DriverStaistic的模型和從它繼承的視圖模型 視圖模型不包含任何額外的屬性它只是一個空的繼承DriverStaistic,我這樣做的原因是我從外部庫接收模型對象,我想保持耦合到最低限度。 由於基礎和子類包含相同的屬性我想知道如果我們有一個簡單的方法來轉換它們之間的轉換,而不是使用lambda表達式,這需要我每次添加或省略屬性時都要修改它將基礎模型轉換爲子視圖模型
I已經使用反思提出了這個解決方案,但我相信它會在將來出現性能問題。 任何人都可以有更好的建議嗎?
public static void FromDriverStatistic(this DriverStatisticsVm viewModel, object model)
{
bool isDriverStatistic = model is DriverStatistic;
if(!isDriverStatistic)
throw new InvalidCastException();
var modelProperties = model.GetType().GetProperties();
foreach (var property in modelProperties)
{
property.SetValue(viewModel, property.GetValue(model));
}
}
「我從外部庫收到模型對象,我想保持耦合到最低限度」,這導致需要做這樣的骯髒的黑客? – Will