从泛型类型列表中获取通用字段值

时间:2016-05-05 15:00:51

标签: c# generics

我有很多设置可以是众多类型中的一种。例如,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

0 个答案:

没有答案