gpt4 book ai didi

c# - 泛型 - C# - 无隐式引用转换

转载 作者:太空宇宙 更新时间:2023-11-03 21:28:53 26 4
gpt4 key购买 nike

我知道问题所在,但找不到解决方案。我怎样才能创建这样的结构。正确的做法是什么?

public class BuildingListPageViewModel : ListPageViewModel<BuildingItemViewModel>
{
}

public interface ItemViewModel<T> where T:IEntity
{
T Model { get; set; }
}

public abstract class ListPageViewModel<TVm> : PageViewModel where TVm : ItemViewModel<IEntity>
{
}


public class BuildingItemViewModel : ItemViewModel<Building>
{
}

public partial class Building : IEntity
{
public int Id;
}

它给出 BuildingItemViewModel不能用作类型参数 TVm在通用类型或方法中 ListPageViewModel<TVm> . BuildingItemViewModel 没有隐式引用转换至 ItemViewModel<IEntity>错误。

最佳答案

ListPageViewModel 需要第二个通用参数:

public abstract class ListPageViewModel<TVm, TModel>
where TVm : ItemViewModel<TModel>
where TModel : IEntity
{
}

然后声明从 ListPageViewModel 派生的类,同时指定了 TVmTModel:

public class BuildingListPageViewModel
: ListPageViewModel<BuildingItemViewModel, Building>
{
}

关于c# - 泛型 - C# - 无隐式引用转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25301345/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com