如何获取服务器上System.Net.SecurityProtocolType的可用枚举值列表?
解决System.Net.SecurityProtocolType枚举下拉列表绑定问题
VB.NET 解决方案
你之前的错误在于混淆了TypeOf和GetType()的用法:TypeOf是用来判断对象类型的运算符,而获取枚举的Type对象需要用GetType()方法。正确获取枚举值并绑定到下拉控件的代码示例如下:
' 获取SecurityProtocolType的所有枚举值 Dim securityProtocols As Array = System.Enum.GetValues(GetType(System.Net.SecurityProtocolType)) ' 绑定到ComboBox(以WinForms为例) ComboBox1.DataSource = securityProtocols
如果需要显示枚举的友好名称(对应字符串),可以结合Enum.GetNames:
Dim protocolNames As String() = System.Enum.GetNames(GetType(System.Net.SecurityProtocolType)) ComboBox1.Items.AddRange(protocolNames)
C# 解决方案
C#中使用typeof关键字获取枚举的Type对象,示例代码如下:
// 获取SecurityProtocolType的所有枚举值 Array securityProtocols = System.Enum.GetValues(typeof(System.Net.SecurityProtocolType)); // 绑定到ComboBox(WinForms示例) comboBox1.DataSource = securityProtocols;
同样,若要获取枚举名称数组:
string[] protocolNames = System.Enum.GetNames(typeof(System.Net.SecurityProtocolType)); comboBox1.Items.AddRange(protocolNames);
错误原因说明
你之前的两种写法都不符合方法参数要求:
- 直接传入
System.Net.SecurityProtocolType:这是枚举类型本身,不是Type对象,不符合Enum.GetValues的参数要求 - 使用
TypeOf (System.Net.SecurityProtocolType):TypeOf在VB中只能用于对象的类型判断,不能直接获取类型对象,正确的类型获取方式是GetType()
内容的提问来源于stack exchange,提问作者MarkEMarkEMark
相关产品推荐
相关产品推荐

