c# - 如何转换嵌套的泛型类型?
问题描述
首先,我使用的是 Unity,它不支持任何最新功能,例如IEnumerables 的除外或Cast。
我有一个抽象类Item
和另一个类Sword
and Hammer
,它们都继承自Item
. 我也有一个 struct ItemHolder
。
public struct ItemHolder<ItemType> where ItemType : Item {
public ItemType Item {get; set;}
}
我有两个列表List<ItemHolder<Sword>> swordList
和其他列表,List<ItemHolder<Hammer>> hammerList
并希望生成一个类型列表List<ItemHolder<Item>>
,其中包含转换为的其他列表的所有元素ItemHolder<Item>
。
我试过这个代码片段:
public List<ItemHolder<Item>> GetAllItems() {
List<ItemHolder<Item>> allItems = new List<ItemHolder<Item>>();
List<ItemHolder<Item>> swordItemList =
CastListElementsToType<ItemHolder<Sword>, ItemHolder<Item>>(swordList);
//do the same thing for the hammers and add all elements to allItems.
return allItems;
}
private List<To> CastListElementsToType<From, To>(List<From> list) where From : To {
List<To> result = new List<To>();
foreach (From element in list) {
result.Add((To) element);
}
return result;
}
ItemHolder<Sword>
但它告诉我,从到没有可用的拳击转换ItemHolder<Item>
。
有什么办法可以解决这个问题还是我需要一个全新的方法?
解决方案
推荐阅读
- angular - Angular @Input 在浏览器上不起作用并且组件不会呈现
- python - 为什么python中的self总是叫self,而不是另一个名字?
- javascript - 将前导零添加到简单的时间戳添加 JavaScript 函数
- javascript - 从存储中下载 url 后如何通过时间戳在数据库中实时更改图像名称
- list - 如何更新变量以保持级联结构中列表的长度?
- php - 在第二个 php 文件(通过 jQuery load())中更改后,如何确保 index.php 中的 PHP 变量可用?
- javascript - 如何在 IIFE 中访问一个函数的内容?
- c# - 如何在 C# 的函数 posgrest 中将 null 设置为 Integer
- python - PyTorch C++ 扩展:如何索引张量并更新它?
- java - 尝试使用 java 读取 csv 文件并选择特定的行/列