字典 - 添加注释以驱动intellisense

时间:2012-05-02 20:47:03

标签: c# dictionary intellisense

有没有办法添加注释来记录Dictionary或ConcurrentDictionary以了解键/值的含义?

例如:

Dictionary<guid, string> _users;

此示例包含用户词典。 guid是UserId,字符串是用户名,但除了“知道”之外,很难说出来。

有没有办法添加文档,以便在添加项目时,intellisense会告诉开发人员关于密钥&amp;值?

我知道我可以在其上方添加<summary>评论,并将该注释放在对象本身中,但在添加,删除等时正在寻找。

4 个答案:

答案 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>;