gpt4 book ai didi

c# - 无法转换类型为 'System.Collections.Generic.List` 的对象 1[Item ]' to type ' ItemList'

转载 作者:太空狗 更新时间:2023-10-29 17:51:24 25 4
gpt4 key购买 nike

出于某种原因,我的老板喜欢创建自定义类型来表示通用列表(即使在大多数情况下,他的自定义类型没有成员!我认为他只是懒惰,不喜欢键入列表或其他内容,而是对我来说,这很蹩脚,并且根据以下问题让我很头疼。

以防万一:

public class ItemnList : List<Item>
{
public Personalization FindById(int id)
{
...blahblah blah, this is really an extension method that should be elsewhere
}

}

因此,当我使用标准列表时(也许我讨厌他的自定义类并且喜欢使用它们应该使用的普通 .NET 类型),或者也许我正在使用如下所示的 LINQ 表达式,我总是运行即使自定义类型继承自该列表,也会陷入类型转换问题

private ItemList someMethod(ItemList itemList)
{
...
itemList = (ItemList)items.Where(x => x.ItemType != ItemType.Car && x.ItemType != ItemType.Truck).ToList();

return itemList;
....
}

最佳答案

作为Grzenio points out ,您不能使用 ToList() 和强制转换,但是您可以创建自己的扩展方法来从序列创建派生类型的实例:

public static TDerived CreateFromEnumerable<TDerived, T>(this IEnumerable<T> seq) where TDerived : List<T>, new()
{
TDerived outList = new TDerived();
outList.AddRange(seq);
return outList;
}

因此,对于您的示例,您将执行以下操作:

ItemList outList = itemList
.Where(x => x.ItemType != ItemType.Car && x.ItemType != ItemType.Truck)
.CreateFromEnumerable<ItemList, Item>();

关于c# - 无法转换类型为 'System.Collections.Generic.List` 的对象 1[Item ]' to type ' ItemList',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1882520/

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