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

请注意我在哪里评论它坏了。我认为我应该在这里使用某种形式的反射,但不确定在这里最好的方法是什么。

4

1 回答 1

2

问题实际上在这里:

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

您不能staticinterface. 接口只允许定义实例成员。

您需要确定一些其他机制来IEqualityComparer<T>在您的设计中指定您的。

于 2012-09-27T23:28:31.550 回答