好的,我有一个与ObservableCollection一起使用的排序方法,其顶行如下:
public static void Sort<T>(this ObservableCollection<T> collection) where T : IHasID
因此,如您所见,T必须实现接口“ IHasID”。
我发现自己遇到的错误情况是当我将特定的ObservableCollection传递给此方法时,该类型是ChatNodeViewModel。该类的顶行如下:
public class ChatNodeViewModel : GenericViewModelBase
因此,ChatNodeViewModel具有基类GenericViewModelBase。现在,如果我们看一下:
public class GenericViewModelBase : ObservableObject, IComparable, IHasID
我们可以看到它实现了IHasID。因此,ChatNodeViewModel也实现IHasID。还是我想。
调用如下:
Static_Extensions.Extensions.Sort(ChatNodeVMs);
就目前而言,我收到以下错误消息:
错误62类型'HCChatNodeApplication02.ViewModel.ChatNodeViewModel'在通用类型或方法'HCChatNodeApplication02.Static_Extensions.Extensions.Sort(System.Collections.ObjectModel.ObservableCollection)'中不能用作类型参数'T'。从“ HCChatNodeApplication02.ViewModel.ChatNodeViewModel”到“ HCChatNodeApplication02.IHasID”没有隐式引用转换。
那么这是否意味着它没有实现此接口?
所以我尝试对其进行一些更改,以使ChatNodeViewModel看起来像这样:
public class ChatNodeViewModel : GenericViewModelBase, IHasID
现在,它不仅实现接口,而且还继承自实现该接口的基类。这将导致错误消失,并且一切都很好...
...但对我而言这没有意义。当然,如果基类实现了接口,派生类也实现了该接口吗?
还是我在看不见的地方犯了一些明显的错误?
编辑:抱歉,这很明显。实际上有两个IHasID,这是两者之间的冲突。感谢所有花时间提供帮助的人。这样就解决了。