如何通过反射使列表类型具有示例元素类型
本文关键字:类型 元素 反射 列表 何通过 | 更新日期: 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());