c# – 无法巧妙地将类型Void转换为类型System.Collections.Generic.IList

c# – 无法巧妙地将类型Void转换为类型System.Collections.Generic.IList,第1张

概述试图返回一个泛型类型,并得到标题中描述的错误. 我相信我做的事情很傻 – 建议赞赏…… public static IList<T> GetGroupById<T>(int groupId) { DashboardGroupType type = (DashboardGroupType)groupId; IList<T> resul 试图返回一个泛型类型,并得到标题中描述的错误.
我相信我做的事情很傻 – 建议赞赏……

public static IList<T> GetGroupByID<T>(int groupID)        {            DashboardGroupType type = (DashboardGroupType)groupID;            IList<T> result = null;            var obj = default(T);            switch (type)            {                case DashboardGroupType.CountrIEs:                    break;                case DashboardGroupType.Customers:                    // this returns a List of typ  IEnumerable<Customer>                    obj = (T) CustomerRepository.GetAllCustomers();                    break;                case DashboardGroupType.FacilitIEs:                    // this returns a List of typ  IEnumerable<Facility>                    obj = (T) FacilityRepository.GetAllFacilitIEs();                    break;                case DashboardGroupType.Heiarchy:                    break;                case DashboardGroupType.lines:                    break;                case DashboardGroupType.Regions:                    // this returns a List of typ  IEnumerable<string>                    obj = (T) CustomerRepository.GetRegionsHavingCustomers();                    break;                case DashboardGroupType.States:                    // // this returns a List of typ  IEnumerable<Customer>                    obj = (T) CustomerRepository.GetStatesHavingCustomers();                    break;                case DashboardGroupType.Tanks:                    break;                default:                    break;            }            result = result.Add(obj); // ERROR IS THROWN HERE        }
解决方法 Add方法不返回任何内容.它只是更改列表.这就是你收到错误的原因.只需删除作业:

result.Add(obj);

另一个问题是你没有初始化结果.运行代码时,您将收到NullReferenceException.你需要这样的东西:

IList<T> result = new List<T>();

您还需要从此函数返回一个值.我猜你想要

return result;

根据您的意见,方法CustomerRepository.GetAllCustomers();和FacilityRepository.GetAllFacilitIEs();并且喜欢返回IEnumerable< Customer>,或IEnumerable< Facility>或类似的实例.你将这些转换为T.这意味着所有这些类型都必须可以转换为T.

我猜你想要的是把这些集合中的所有项目都添加到列表中.如果是这种情况,你应该转换为IEnumerable< T>相反,并调用AddRange方法.

总的来说,这似乎是一个非常糟糕的设计.根据您要实现的目标,可以使用继承和/或接口获得更好的设计.

总结

以上是内存溢出为你收集整理的c# – 无法巧妙地将类型Void转换为类型System.Collections.Generic.IList全部内容,希望文章能够帮你解决c# – 无法巧妙地将类型Void转换为类型System.Collections.Generic.IList所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1226176.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存