我要疯了。这可能是因为我错过了一些规则,但如果是这样,那么请告诉我。字典与对象作为价值
我试图创建一个Dictionary
与一个字符串的键和一个匿名对象作为值。或者,其实我不只是在尝试,我正在做。 但是当我想改变对象中的特定参数时,它会出错。
我宣布字典是这样的:
var areas = new Dictionary<string, object>
{
{"Key1", new {name = "Name1", today = 0, all = 0}},
{"Key2", new {name = "Name2", today = 0, all = 0}},
...
}
然后我假设我可以这样做:
foreach (var area in areas.Keys.ToArray())
{
var areaname = areas[area].name;
}
但Visual Studio的不同意,并拒绝编译。不过,如果我写这篇文章,一切都按我的想法工作 - 但这并不能真正帮助我,这只会让我更加沮丧。
var areaname = new
{
name = "Nametest", today = 0, all = 0
};
var testname = areaname.name;
我在做什么错?为什么它不适合我?这样做根本不可能吗?
感谢您的所有答案,他们肯定会清理一些东西! 我想我可能一直在混淆类型对象与对象的思想,即类,在C#中的挫败感。我会重新考虑整个设计业务,可能会做一些完全不同的事情,而不是使用邪恶或肮脏的解决方案。虽然有趣,但我不认为我与C#的关系已经发展到如此遥远!
您是否尝试过使用“动态”而不是你的值类型的“对象”? –
编译器无法解析从字典中检索的对象(值)上的Name属性。对于var的情况,编译器会放入真正的on-the-fly类型来代替var,协助编译器。为什么在这种情况下需要匿名类型?当你知道什么属性应该存在于所有的值,即它不是未知的。 – Gishu