c# - 如何返回通用列表?

标签 c# generics

我什至不认为我的问题是正确的,因为我刚刚开始使用泛型,而且我的知识不是很好。

假设我有以下方法:

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/

相关文章:

c# - RestSharp 忽略 .NET Core 上的系统代理(例如 Fiddler)

c# - IEnumerable 类中的委托(delegate)列表<T>

c# - 如何在单独的线程中打开第二个UI

c# - 使用 Unity 注册尚不存在的 MVC 类型

java - 如何在 Java 中正确创建扩展泛型接口(interface)的有界泛型类

javascript - 找不到face-api.js的404页面

Swift - 动态匹配类

c# - 上课做什么? (带问号的类)在 C# 泛型类型约束中是什么意思?

java - 通用数组转换异常

java - 具有泛型的构建器模式和扩展类上的静态内部工厂