2010-04-15 35 views
2

我使用Dr. WPF的ObservableSortedDictionary。Implementing IComparer <T>對於IComparer <DictionaryEntry>

的構造是這樣的:

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作爲其值。

+0

對於任何可能最終在這裏盲目複製的人來說,使用ObservableSortedDictionary你可能希望對Key進行排序而不是Value。 – Thomas 2011-04-13 20:13:12

回答

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); 
    } 
} 

這是否做了什麼需要?

+0

Arggggggggggg。很簡單。 – 2010-04-15 19:52:48