C# 字典-添加注释以驱动intellisense

C# 字典-添加注释以驱动intellisense,c#,dictionary,intellisense,C#,Dictionary,Intellisense,有没有一种方法可以添加注释以记录字典或ConcurrentDictionary,从而了解键/值的含义 例如: Dictionary<guid, string> _users; Dictionary\u用户; 这个例子有一个用户字典。guid是用户ID,字符串是用户名,但除了“知道”之外,很难说清楚 是否有一种方法可以添加文档,以便在添加项目时,intellisense会告诉开发人员一个关于键和值的注释 我知道我可以在它上面添加一个注释,它会将注释放在对象本身中,但在添加、删除等操

有没有一种方法可以添加注释以记录字典或ConcurrentDictionary,从而了解键/值的含义

例如:

Dictionary<guid, string> _users;
Dictionary\u用户;
这个例子有一个用户字典。guid是用户ID,字符串是用户名,但除了“知道”之外,很难说清楚

是否有一种方法可以添加文档,以便在添加项目时,intellisense会告诉开发人员一个关于键和值的注释


我知道我可以在它上面添加一个
注释,它会将注释放在对象本身中,但在添加、删除等操作时会查找注释。

您可以对字典进行子类化,覆盖各种添加/删除方法以放置自己的注释。另一个选项是创建自己的集合类,该类封装内部字典并实现IDictionary(如果需要)。除此之外,我不确定visual studio的哪些功能/技巧可以满足您的需要,但我不是这方面的专家。

对于您的具体情况,简短的回答是“不是没有一堆样板代码”

方法可以修饰为记录类型参数的含义。下面将显示参数在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>
//
///类来包含对象
/// 
///用户ID
///用户名
公共类MyDictionary:Dictionary
您可以使用它来覆盖虚拟方法,并以相同的方式记录它们。然而,Dictionary基本上并没有虚拟对象,所以您需要创建自己的调用,然后调用“base”。(忽略有问题的“new”)

但在这一点上,你应该继续:

public class MyDictionary : Dictionary<string,string> 
公共类MyDictionary:Dictionary

最近,在GOOS的书中,我发现了一个有趣的想法,即在自己的类中打包常见类型(如集合):

尝试使用您正在处理的问题的语言,而不是.Net构造的语言。信息技术 减少域和代码之间的概念差距。也尽量限制 使用泛型传递类型。这是一种 重复。这是一个暗示,有领域的概念,应该 提取到类型

坦率地说,我在包装常见的泛型集合方面并不是那么极端,但即使给一个类型自己的名称,也会使它更易于阅读和理解:

public class UserNameDictionary : Dictionary<int, string>
{
}

对于更复杂的用例,我会使用自定义类,它将工作委托给内部字典。

一个比Sergey的解决方案需要更少的开销,但实现同样的效果的解决方案是

using UserNameDictionary = Dictionary<int, string>;
使用UserNameDictionary=Dictionary;

对我来说,听起来真是太过分了。。。
/// <summary>
/// Represents a dictionary of user names accessed by ids.
/// </summary>
public new void Add(int userId, string userName)
{
    base.Add(userId, userName);
}
using UserNameDictionary = Dictionary<int, string>;