【发布时间】:2017-05-10 08:23:56
【问题描述】:
我的任务是在 c# 中构建数据集合。
每个数据集都有这些属性:
- 类型
- 名称(简短描述)
- 服务字符串
- HTTP方法
“类型”和“名称”属性具有一组已知且固定的值。
示例数据:
Type: User
-> Name: Get_Users_List
-> Name: Add_User
-> Name: Enable_User
-> Name: Disable_User
Type: Rights
-> Name: Get_Rights_List
-> Name: Approve_User_Right
...等等。
为了最大程度地减少编码错误,并且由于条目列表是已知且已修复的,我为“类型”和“名称”创建了几个枚举。
示例数据:
enumTypes
enumUserFunctions
enumRightFunctions
...等等。
我也知道在代码中应该如何访问数据:
SomeCollection[enumType.User][enumUserFunctions.Add_User].ServiceString
SomeCollection[enumType.User][enumRightFunctions.Approve_User_Right].HTTPMethod
我正在尝试使用嵌套字典来实现此目标,但我面临的问题是嵌套字典具有不同的类型,具体取决于我尝试存储的数据集类型。
Dictionary<enumTypes, Dictionary<variableEnum, AutoPropertyWithValues>>
我如何轻松地实现我的目标?
编辑
根本原因是我的代码中有一些需要多次使用的对象,我想实现一种直观的方式来导航到它们。这就是我在 Sinatr 的建议下从我的根本想法中做出的。
public class FunctionCollection
{
public UserFunctions UserFunctions { get; } = new UserFunctions();
public BaseDataFunctions BaseDataFunctions { get; } = new BaseDataFunctions();
/* ... and so on ... */
}
public class UserFunctions
{
public RestFunction Do_User_Login { get; set; } = new RestFunction();
public RestFunction Do_User_Logout { get; set; } = new RestFunction();
/* ... */
}
public class BaseDataFunctions
{
public RestFunction Get_Product_List { get; set; } = new RestFunction();
/* ... */
}
public class RestFunction
{
public string ServiceUriString { get; set; }
public HttpVerbs Method { get; set; }
/* ... and so on ... */
}
最后一个问题。 有没有办法直接在定义中设置对象? 例如在 Do_User_Login 的定义中设置 ServiceUriString 和 HTTPMethod:
public RestFunction Do_User_Login { get; set; } = new RestFunction();
【问题讨论】:
-
您可以嵌套字典,但使用
User和Rights类可能会更简洁。 -
我完全不喜欢使用
Dictionary来保存配置。AutoPropertyWithValue是什么?答案实际上取决于您对值做了什么(如何填充和使用字典)。 -
根本问题是什么?闻起来像是从配置文件 (JSON) 中获取值?
-
根本原因是我的代码中有一些需要多次使用的对象,我想实现一种直观的方式来导航到它们。所有值都是固定的,需要硬编码。所以不,它与从配置文件中获取值无关;)
标签: c# dictionary types nested