【发布时间】:2019-08-21 21:05:17
【问题描述】:
我正在尝试在 C# 中创建一个具有从 JSON 文件获取的字典 (bigDict) 的类。 bigDict 将字符串映射到大数据结构。由此,我想创建另一个字典(smallDict),将每个字符串从键映射到bigDict 的数据结构值中的一个元素(一个字符串)。
我尝试使用 get 和 set 来创建 smallDict。我能够成功使用get,但我被困在set。
class myClass
{
public Dictionary<string, SomeStruct> bigDict{ get; set; } /*get and set from a JSON file*/
public virtual Dictionary<string, string> smallDict
{
get => bigDict.ToDictionary(x => x.Key, x => x.Value.ElemFromStruct); //works fine
set => smallDict.ToDictionary.update(key , value); //doesn't work fine
}
}
由于无法正确设置,我在一些预先存在的测试用例中收到property or indexer cannot be assigned to, is readonly 错误(我正在重构代码)
【问题讨论】:
-
ToDictionary.update()应该是什么意思?它告诉我 ToDictionary 是一种方法,在给定的上下文中无效。另外......在我看来,getter 似乎返回了一个临时对象。您的 setter 调用 getter,获取临时对象,然后对该临时对象执行一些操作。为什么?此外,key未定义。 -
@EdPlunkett 是的,可能不是。我对 C# 很陌生,所以我只是在尝试一些东西。可能我写 set 的方式是完全错误的
-
我想,为了可读性、可测试性和可维护性,您不应该这样做。创建单独的类,将所有逻辑封装在类中。
标签: c# .net dictionary getter-setter