2012-09-27 63 views
1

新來C#泛型,所以不知道如果我這樣做是正確的,但我得到一些錯誤我真的很感謝幫助解決!通用的地方傳遞給基類從通用類型調用的方法

namespace Microsoft.Outlook.ModernPrototype.ViewModels.ItemListView 
{ 
    public class ConversationMap<T> : Dictionary<T, ConversationListItem> 
     where T : ConversationKeyInterface<KeyEqualityInterface<T>> 
    { 
     public ConversationMap() : base(T.getEquality()) { } // breaks 
    } 

    public class KeyEqualityInterface<S> : IEqualityComparer<S> 
     where S : ConversationKeyInterface<S> { } 

    public interface ConversationKeyInterface<T> 
    { 
     static T getEquality(); 
    } 
} 

請注意我在哪裏評論說它打破了。我認爲我應該在這裏使用某種形式的反思,但不知道這裏最好的方法是什麼。

回答

2

的問題實際上是在這裏:

public interface ConversationKeyInterface<T> 
{ 
    static T getEquality(); 
} 

不能定義在interfacestatic方法(或屬性)。接口只允許定義實例成員。

您需要確定一些其他機制來指定您的設計中的IEqualityComparer<T>