泛型类无法接受具有到泛型where类型限制的直接行的对象

本文关键字:类型 对象 where 泛型 泛型类 | 更新日期: 2023-09-27 18:27:43

我有一个用继承链定义的c#数据类,如下所示:

public abstract class EntityBaseCore
public abstract class EntityBase : EntityBaseCore
public partial class AdmSite : EntityBase

一个通用类定义如下:

public abstract class ViewModelSecurityBase<T> : Screen, where T : EntityBaseCore
public abstract class EditorViewModelBase<T> : ViewModelSecurityBase<T> where T : EntityBaseCore

我的视图模型类如下:

public class SiteViewModel : EditorViewModelBase<AdmSite>

失败

The type 'Yargo.DataModel.AdmSite' cannot be used as type parameter 'T' in the generic type or method 'Yargo.Common.ViewModel.EditorViewModelBase'. There is no implicit reference conversion from 'Yargo.DataModel.AdmSite' to 'Yargo.DataModel.EntityBaseCore'

AdmSite和EntityBaseCode之间的继承链似乎是直接的。我不明白为什么会失败。

泛型类无法接受具有到泛型where类型限制的直接行的对象

下面的代码似乎对我有效。

public class Screen { }
public abstract class EntityBaseCore
{    }
public abstract class EntityBase : EntityBaseCore
{    }
public partial class AdmSite : EntityBase
{    }
public abstract class ViewModelSecurityBase<T> : Screen where T : EntityBaseCore
{    }
public abstract class EditorViewModelBase<T> : ViewModelSecurityBase<T> where T : EntityBaseCore
{    }
public class SiteViewModel : EditorViewModelBase<AdmSite>
{    }