gpt4 book ai didi

c# - 使用双泛型时出错

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

我有这个类和接口(interface):

public class BasicListViewModel<T> : ObservableObject , IListViewOperations<T>,IUpdateHandler
where T : bre.Domein.Entity

public interface IListViewOperations<T> where T:bre.Domein.Entity

public class IngredientInVoorraad : bre.Domein.Entity

编译器针对此代码给出以下错误:

参数 1:无法从“bre.Presentatie.BasicListViewModel”转换为“bre.Presentatie.IListViewOperations”

 var viewModelsPages = new List<IListViewOperations<Entity>>();
var allIngredientsViewModel = new BasicListViewModel<IngredientInVoorraad>(()=>RepositoryFactory.getIngredientInVoorraadRepository().FindAll());
viewModelsPages.Add(allIngredientsViewModel); //COMPILE ERROR OCCURS HERE

我不明白为什么这不起作用:BasisListViewModel 继承自 IListViewOperations,IngredientInVoorraad 继承自 Entity。

谁能解释为什么这是错误的,以及如何在保持接口(interface)和通用性的同时解决它?

谢谢你帮助我!

最佳答案

您的接口(interface) IListViewOperations 不是协变的。如果将接口(interface)定义设置为 IListViewOperations<out T> ,您的接口(interface)将变得协变,并且此类转换将变得隐式。在以下 MSDN 文章中进一步了解协变和逆变:http://msdn.microsoft.com/en-us/library/ee207183.aspx

关于c# - 使用双泛型时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23763463/

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