有很多方法可以做到这一点。
您可以有一个公共接口或抽象类,所有视图模型共享该接口或抽象类,该接口或抽象类具有您要保存的属性。那么
SaveToDb
只接受接口而不是泛型类型。然后进入
储蓄银行
您可以从传入的模型访问接口属性的所有属性,并对它们执行任何所需的操作。我想如果你只想让一些属性为空,那么抽象类是有意义的,因为你可以重写你想使用的任何东西
例如
public abstract class SavedInputsBase
{
public virtual string Name { get; set; }
public virtual int Unique1 { get; set; }
public virtual int Unique2 { get; set; }
}
public class ViewModel1 : SavedInputsBase
{
public override string Name { get; set; }
public override int Unique1 { get; set; }
...
}
public class ViewModel2 : SavedInputsBase
{
public override string Name { get; set; }
public override int Unique2 { get; set; }
...
}
public bool SaveToDb(SavedInputsBase model)
{
var inputs = new SavedInputs()
{
Name = model.Name,
Unique1 = model.Unique1,
Unique2 = model.Unique2
}
_db.SavedInputs.Add(inputs);
}
或者你可以使用类似Automapper nuget包的东西
储蓄银行
拿
SavedInputs
然后将viewmodel映射到
储蓄
. 或者只需手动将其映射到要调用SaveToDb的任何位置。