C# 表示.NET 3.5哈希集的最佳.NET 2.0类型是什么<;T>;?
我正在为自己编写一个类库来管理Active Directory 我有一个界面:C# 表示.NET 3.5哈希集的最佳.NET 2.0类型是什么<;T>;?,c#,vb.net,generics,.net-3.5,.net-2.0,C#,Vb.net,Generics,.net 3.5,.net 2.0,我正在为自己编写一个类库来管理Active Directory 我有一个界面: Public Interface ISourceAnnuaire(Of T as {IGroupe, ITop, IUniteOrganisation, IUtilisateur}) Readonly Property Changements As Dictionary(Of T, HashSet(Of String)) End Interface 此Changements属性用于将作为源的一部分的特定元素
Public Interface ISourceAnnuaire(Of T as {IGroupe, ITop, IUniteOrganisation, IUtilisateur})
Readonly Property Changements As Dictionary(Of T, HashSet(Of String))
End Interface
此Changements属性用于将作为源的一部分的特定元素上发生的更改保存在内存中
然而,我仍然坚持使用.NETFramework2.0。最接近HashSet(字符串)的.NET 2.0是什么?我会创建自己的HashSet类,并在后台使用一个空值字典(仅使用键)。或者使用非通用的
哈希表
或者破解一个字典并使用它的键集合
Public class HashSetHack<T> : //Whatever collection interfaces you need.
{
private readonly Dictionary<T, object> dict = new Dictionary<T, object>();
//whatever code you need to wrap the interfaces using dict.Keys eg:
public void Add(T value)
{
dict.add(value, null);
}
}
Public class HashSetHack://您需要的任何集合接口。
{
专用只读词典dict=新词典();
//使用dict.key包装接口所需的任何代码,例如:
公共无效添加(T值)
{
dict.add(值,空);
}
}
这里有一个特别灵活的方法:
public abstract class UniqueSet<T, TDictionary> : ICollection<T>
where TDictionary : IDictionary<T, byte> {
protected TDictionary _internalDictionary;
protected UniqueSet(TDictionary dictionary) {
_internalDictionary = dictionary;
}
// implement the ICollection<T> interface
// using your internal dictionary's Keys property
// for example:
public void Add(T value) {
_internalDictionary.Add(value, 0);
}
// etc.
}
public class UniqueSet<T> : UniqueSet<T, Dictionary<T, byte>> {
public UniqueSet() : base(new Dictionary<T, byte>()) { }
}
公共抽象类唯一集:ICollection
其中t词典:i词典{
受保护的词典;
受保护的唯一集(t字典){
_字典=字典;
}
//实现ICollection接口
//使用内部词典的Keys属性
//例如:
公共无效添加(T值){
_internalDictionary.Add(值为0);
}
//等等。
}
公共类唯一集:唯一集{
public UniqueSet():base(new Dictionary()){}
}
你会问,为什么是抽象基类?好的,使用这种方法,您还可以实现一个
SortedUniqueSet
,其中SortedList
作为其内部集合(这可以实现IList
),而实际上不需要编写更多的代码。您还可以利用您偶然发现的IDictionary
的任何奇特的其他实现(如果您选择的话)。库中的Set
类的行为几乎与HashSet
相同。它与.NET 2.0配合使用。感谢大家的精彩解答!不幸的是,我只能选择一个=P@Josh的回答最能说明我现在需要什么。但我也会关注你的解决方案。衷心感谢!