如何通过反射使列表类型具有示例元素类型

本文关键字:类型 元素 反射 列表 何通过 | 更新日期: 2023-09-27 18:20:41

我需要定义一种类型的对象,我从服务中接收。服务有不同的名称空间,但有相同的对象,所以我写了一些解析器来获取接收类型的名称。但我在检测像这样的嵌套列表类型时遇到了一些麻烦

    List<List<SomeObjectType>> 
or
    List<List<Tuple<int,int,SomeObjectType>> 

因此,在我的递归函数中,我需要制作一个具有示例元素类型的列表类型。像这样:

public Type getType(TypeSpec TypeInfo, string NameSpace)
{
    Type foundType = ObjectsHelper.ByName(NameSpace + "." + nameOfType);
    if (foundType == null) throw new TypeNotFoundException(TypeInfo.name);
    else
    {
        if (TypeInfo.generic_params != null && TypeInfo.generic_params.Count > 0) // if has generic params, run recursive
        {
            var listOfParams = new List<Type>();
            foreach (var gp in generic_params)
            {
                listOfParams.Add(this.getType(gp, NameSpace));
            }
            // here is a heart of the matter
            HowToAddGenericParameters(foundType, listOfParams); // ????
        }
        return foundType;
    }
}

有可能吗

如何通过反射使列表类型具有示例元素类型

您似乎在寻找MakeGenericType方法

foundType.MakeGenericType(listOfParams.ToArray());