我有很多设置可以是众多类型中的一种。例如,URL,文本,数字等。基于其他帖子我提出以下似乎工作正常:
public abstract class SettingViewModel
{
public string Name { get; set; }
public string Description { get; set; }
public SettingType Type { get; set; }
public string DefaultValue { get; set; }
public Module? Module { get; set; }
}
public class SettingViewModel<T> : SettingViewModel
{
[Required]
public T Value { get; set; }
}
我最大的问题是,当我想要为每个设置读取值时,我想要的方法就是这样。我真的不想改变这种方法的形状,因为我想保持它的通用性,它将作为MVC中的控制器方法公开
public void Update(SettingViewModel Setting)
{
GS_SysConfig setting = new GS_SysConfig();
//might also just use a util function to convert to string based on the type of Value
setting.ConfigVal = Setting.Value.ToString(; //Value is not a field in the abstract class
db.SaveChanges();
}
这不会起作用,因为Value不是父类中的一个字段,我想我可以想出一些做铸造和获取类型的方法,但它看起来很乱,而且不是很优雅。有没有更好的方法来尝试完成我想要做的事情?
更新: ConfigVal的类型为String