每个VB.NET开发人员都清楚,当尝试在VS中编写代码时,intellisense为.NET函数的参数提供值; 但现在的问题是如何定义一个函数,在编码时,它本身有助于我们为函数参数选择可接受的值?
一个可能有用的图像:

虽然Enums提供"本机"行为,但它也存在于其他非Enum类型,例如System.Drawing.Color或System.Drawing.Brush,它们在点缀时会显示类似的"harcoded values"列表.这种行为也可以在自定义类型上进行(至少在VB.Net中;除非C#中没有可用的更改).
这是如何运作的 ?它是使用一个未记录的XML文档标记,即完成列表,在其中引用一个类型,相同(对于Color)或另一个(对于引用Brushes的Brush).在此类型中,所有公共static/ Shared字段和属性都将位于完成列表中(即使是那些不是引用类型的列表)
所以例如(真的很做作)你可以有这样的东西:
''' <completionlist cref="FamousPeople"/>
Class People
' ...
End Class
NotInheritable Class FamousPeople
Public Shared ReadOnly Sehnsucht As New People("Sehnsucht") ' Why not ?
Shared ReadOnly Property JohnSkeet As New People("John Skeet")
Shared ReadOnly Property EricLippert As New People("Eric Lippert")
Shared ReadOnly Property MarcGravell As New People("Marc Gravell")
End Class
Run Code Online (Sandbox Code Playgroud)
(如果我愿意的话,我本可以把它们直接放在人们里面)
然后,当你必须提供类型为People的值时,Intellisense会显示已定义的"列表"(如果你愿意,可以选择创建一个未列出的列表)