无法巧妙地将类型Void转换为类型System.Collections.Generic.IList
尝试返回generics类型并获得标题中描述的错误。 我确信我做的事情很傻 – 建议赞赏……
public static IList GetGroupById(int groupId) { DashboardGroupType type = (DashboardGroupType)groupId; IList result = null; var obj = default(T); switch (type) { case DashboardGroupType.Countries: break; case DashboardGroupType.Customers: // this returns a list of typ IEnumerable obj = (T) CustomerRepository.GetAllCustomers(); break; case DashboardGroupType.Facilities: // this returns a list of typ IEnumerable obj = (T) FacilityRepository.GetAllFacilities(); break; case DashboardGroupType.Heiarchy: break; case DashboardGroupType.Lines: break; case DashboardGroupType.Regions: // this returns a list of typ IEnumerable obj = (T) CustomerRepository.GetRegionsHavingCustomers(); break; case DashboardGroupType.States: // // this returns a list of typ IEnumerable 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 result = new List ();
您还需要从此函数返回一个值。 我猜你想要
return result;
根据您的意见,方法CustomerRepository.GetAllCustomers();
和FacilityRepository.GetAllFacilities();
并且喜欢返回IEnumerable
或IEnumerable
或类似的实例。 你将这些转换为T.这意味着所有这些类型都必须可以转换为T.
我猜你想要的是把这些集合中的所有项目都添加到列表中。 如果是这种情况,则应转换为IEnumerable
,并调用AddRange
方法。
总的来说,这似乎是一个非常糟糕的设计。 根据您要实现的目标,可以使用inheritance和/或接口获得更好的设计。
result = result.Add(obj);
Add()不返回任何内容。 删除“result =”
你的方法说它将返回IList,但你没有返回任何东西(因此,返回void)。 如果我没有弄错的话,你应该返回结果。
编辑:
实际上,经过进一步审查,我意识到问题是结果result.Add
返回void和行
result = result.Add(obj);
正在尝试将其分配给结果(即List
)。 这就是为什么这行有错误,但你需要返回结果并在向它添加任何内容之前实例化它。
你为什么要分配结果
result = result.Add(obj);
如果你使用,这将工作正常
result.Add(obj);
最后一行是return result;
两件事:你应该在结尾处返回结果,并且在开始时声明结果时,你应该将它声明为新的List而不是null。
你错过了return语句。
上述就是C#学习教程:无法巧妙地将类型Void转换为类型System.Collections.Generic.IList分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
return result;
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1010446.html