实现IComparer <t>用于IComparer <dictionaryentry> </dictionaryentry> </t>

时间:2010-04-15 19:40:50

标签: c# wpf generics

我正在使用WPF博士的ObservableSortedDictionary。

构造函数如下所示:

public ObservableSortedDictionary(IComparer<DictionaryEntry> comparer)

我真的很难创建一个满足构造函数并且可以工作的实现。

我当前的代码(无法编译)是:

public class TimeCreatedComparer<T> : IComparer<T> 
{
    public int Compare(T x, T y)
    {
        var myclass1 = (IMyClass)((DictionaryEntry)x).Value;
        var myclass2 = (IMyClass)((DictionaryEntry)y).Value;
        return myclass1.TimeCreated.CompareTo(myclass2.TimeCreated);
    }
}

它说我不能从T转换为DictionaryEntry。

如果我直接转换为IMyClass,它会编译,但我收到一个运行时错误,说我无法从DictionaryEntry转换为IMyClass。在运行时,x和y是DictionaryEntry的实例,每个都有正确的IMyClass作为它们的值。

1 个答案:

答案 0 :(得分:3)

public class TimeCreatedComparer : IComparer<DictionaryEntry> 
{
    public int Compare(DictionaryEntry x, DictionaryEntry y)
    {
        var myclass1 = (IMyClass)x.Value;
        var myclass2 = (IMyClass)y.Value;
        return myclass1.TimeCreated.CompareTo(myclass2.TimeCreated);
    }
}

这会做什么需要吗?