我什至不认为我的问题是正确的,因为我刚刚开始使用泛型,而且我的知识不是很好。
假设我有以下方法:
public class Wrapper
{
public List<TInfoType> GetInfo<TInfoType>(Array data, EdmCmd edmCmd)
{
switch (edmCmd.meCmdType)
{
case EdmCmdType.EdmCmd_PostAdd:
List<EdmCmdPostAddInfo> info = new List<EdmCmdPostAddInfo>();
foreach (EdmCmdData item in data)
{
info.Add(new EdmCmdPostAddInfo(item.mlObjectID1, item.mlObjectID2, item.mbsStrData1, item.mlLongData1));
}
return info;
break;
default:
break;
}
}
}
我想调用这样的方法:
List<EdmCmdPostAddInfo> info = wrapper.GetInfo<EdmCmdPostAddInfo>(data, edmCmd)
正确的做法是什么?我收到错误:
Cannot implicitly convert type 'System.Collections.Generic.List<EPDM.Utils.EdmCmdPostAddInfo>' to 'System.Collections.Generic.List<TInfoType>'
我这样做是因为传递给该方法的 EdmCmd 结构具有各种通用命名的成员。很难记住每个 CmdType 的成员代表什么,因此我将它们包装在一个更有意义的结构中。
最佳答案
如果你使用
TInfoType[] data
而不是
Array data
作为参数,那么就可以使用
List<TInfoType> info = new List<TInfoType>();
而不是
List<EdmCmdPostAddInfo> info = new List<EdmCmdPostAddInfo>();
然后您不需要执行新操作(而是只需使用传入数据的对象)。 我希望这能为您提供一个起点。
关于c# - 如何返回通用列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1694275/