我正在尝试列出泛型类型(实际上我只需要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" }
}
像魅力一样工作。
答案 0 :(得分:4)
这不是最优雅的解决方案,但它会起作用:
def detail(request):
return render(request, 'blog/detail.html')
有效地,您将值存储在基类中,并将其强制转换到派生类中。
我主张检查您的设计,以及在此处是否真的需要泛型。如图所示,这违背了泛型的目的。