混合字符串和整数类型的列表

时间:2018-11-06 15:59:30

标签: c#

我正在尝试列出泛型类型(实际上我只需要string和int)。两个对象都有名称(字符串),但值不同(整数或字符串)

public class Setting
{    
    public string Name { get; set; }   
}

public class Setting<T> : Setting
{
    public T Value { get; set; }

    public Type Type
    {
        get
        {
            return typeof(T);
        }
    }    
}

列表如下:

List<Setting> list = new List<Setting>();
list.Add(new Setting<int> { Name = "one", Value = 10 } );
list.Add(new Setting<string> { Name = "two", Value = "string value" });

但是,当我尝试获取值时,它不存在。

list[0].Value ????

可以做到吗?

编辑:

令人惊讶的是它的简单性(与泛型,接口相比),感谢@Patrick Hofman的“对象”提示。

    public class Settings
    {
        public string Name { get; set; }
        public object Value { get; set; }
    }

Fields = new List<Settings>{
                        new Settings { Name = "Three", Value = "Three_value" },
                        new Settings{ Name = "Four", Value = 22 },
                        new Settings { Name = "Two", Value = "22" }
                    }

像魅力一样工作。

1 个答案:

答案 0 :(得分:4)

这不是最优雅的解决方案,但它会起作用:

def detail(request):
    return render(request, 'blog/detail.html')

有效地,您将值存储在基类中,并将其强制转换到派生类中。

我主张检查您的设计,以及在此处是否真的需要泛型。如图所示,这违背了泛型的目的。