C# 表示.NET 3.5哈希集的最佳.NET 2.0类型是什么<;T>;?

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属性用于将作为源的一部分的特定元素

我正在为自己编写一个类库来管理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属性用于将作为源的一部分的特定元素上发生的更改保存在内存中


然而,我仍然坚持使用.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的回答最能说明我现在需要什么。但我也会关注你的解决方案。衷心感谢!