【发布时间】:2015-12-17 10:40:23
【问题描述】:
下面的代码是用 Vb.Net 编写的,但我要求提供 Vb.Net 或 C# 示例,无论答案如何。
我有一个这样的类型:
Public NotInheritable Class IniKeyCollection : Inherits Collection(Of IniKey)
Public Sub New()
End Sub
Public Shadows Sub Add(ByVal key As IniKey)
End Sub
Public Shadows Sub Add(ByVal name As String, ByVal value As String)
End Sub
Public Overloads Function Contains(ByVal keyName As String) As Boolean
End Function
Public Overloads Function IndexOf(ByVal keyName As String) As Integer
End Function
End Class
IniKey 是一个具有两个属性的类型:
Public NotInheritable Class IniKey
Public Property Name As String
Public Property Value As String
Private Sub New()
End Sub
Public Sub New(ByVal name As String)
Me.Name = name
Me.Value = String.Empty
End Sub
Public Sub New(ByVal name As String, ByVal value As String)
Me.Name = name
Me.Value = value
End Sub
End Class
我想做的是向IniKeyCollection 添加一个重载,以通过其键名访问IniKey 元素。
我的意思是,而不是默认使用索引:
Dim col As New IniKeyCollection
Dim item As IniKey = col(index:=0)
使用字符串:
Dim col As New IniKeyCollection
Dim item As IniKey = col(keyName:="name")
...然后在内部(尝试)返回与该键名匹配的元素。
我需要为此操作的基本成员是什么?我该怎么做?
【问题讨论】:
-
看起来你正在滚动你自己的字典类...
-
当“Name=”这样的条目出现在多个部分时会发生什么?
-
@Plutonix 在真正的源代码中,每个部分都由一个名为 IniSection 的对象表示,该对象包含仅引用该部分的键。感谢您的评论。
-
我只是好奇。并非没有,但在当今时代,使用序列化而不是 INI,您可以为自己省去很多麻烦和代码。
-
@Plutonix 你的好奇心没问题,我喜欢回答。我对特定的事情使用 Xml 序列化,但 INI 文件最好由终端服务器动态编辑,在我看来,INI 文件是软件的“便携式”设置的最佳选择。
标签: c# .net vb.net generics collections