有没有办法添加注释来记录Dictionary或ConcurrentDictionary以了解键/值的含义?
例如:
Dictionary<guid, string> _users;
此示例包含用户词典。 guid是UserId,字符串是用户名,但除了“知道”之外,很难说出来。
有没有办法添加文档,以便在添加项目时,intellisense会告诉开发人员关于密钥&amp;值?
我知道我可以在其上方添加<summary>
评论,并将该注释放在对象本身中,但在添加,删除等时正在寻找。
答案 0 :(得分:3)
最近在GOOS书中,我发现了在自己的类中打包常见类型(例如集合)的有趣想法:
尝试使用您正在处理的问题的语言,而不是.Net结构的语言。它 减少域和代码之间的概念差距。也试着限制 用泛型传递类型。这是一种形式 复制。这是一个暗示,应该有域概念 提取到类型。
坦率地说,我在打包常见的通用集合方面并不是那么极端,但即使给出一个类型自己的名称,它也更容易阅读和理解:
public class UserNameDictionary : Dictionary<int, string>
{
}
很简单。现在最好阅读:
Dictionary<int, string> users = new Dictionary<int, string>();
UserNameDictionary users = new UserNameDictionary();
您也可以快速为您的班级添加评论:
/// <summary>
/// Represents a dictionary of user names accessed by ids.
/// </summary>
这不会为Add(int,string)等方法添加注释,但是当其他人使用这个类时,他们会在UserNameDictionary
的上下文中思考,而不是在抽象的Dictionary<int, string>
上下文中。< / p>
如果你想让你的课更方便,你可以隐藏基类方法:
public new void Add(int userId, string userName)
{
base.Add(userId, userName);
}
对于更复杂的用例,我会选择将工作委托给内部字典的自定义类。
答案 1 :(得分:2)
对于您的具体情况,简短的回答是“并非没有一堆样板代码&#39;。
可以修饰方法以记录类型参数的含义。以下内容将显示Intellisense中参数的含义。
/// <summary>
/// Class to contain things
/// </summary>
/// <typeparam name="T">UserID</typeparam>
/// <typeparam name="TK">UserName</typeparam>
public class MyDictionary<T,TK> : Dictionary<T,TK>
您可以使用它来覆盖虚拟方法并将其记录相同。然而,词典&lt;,&gt;基本上没有虚拟,所以你需要创建自己的电话然后打电话给基地&#39;。 (忽略有问题的&#39;新&#39;)。
但那时你应该继续:
public class MyDictionary : Dictionary<string,string>
并完成它。
答案 2 :(得分:1)
您可以将字典子类化,覆盖各种添加/删除方法以放置您自己的注释。另一种选择是创建自己的集合类,它包装内部字典并实现IDictionary(如果需要)。除此之外,我不确定视觉工作室的功能/技巧可以用来做你想做的事情,但我不是那方面的专家。
答案 3 :(得分:0)
解决方案需要比谢尔文的解决方案更少的开销,但实现相同的解决方案
using UserNameDictionary = Dictionary<int, string>;