试图从PropertyInfo获取泛型类型

时间:2018-08-22 14:12:29

标签: c# generics reflection

首先让我说说,我了解'PropertyType'属性。

所以我一直在使用通用转换器。

用法非常简单;看起来像这样:

int1 = TConverter.ChangeType<int>(strt1);

因此该字符串变为and int(如果可以)。以上工作正常。但是,问题是列出类型的尖括号之间的部分。我想在其中获取PropertyInfo的类型,但看不到。

我将其简化为主要问题的代码如下:

foreach (PropertyInfo pi in props)
        {
            Type tp = pi.PropertyType;

            var converted = TConverter.ChangeType<tp>("Test");
        }

我想我一定是犯错了,因为它与尖括号中的内容有关。我收到此消息:“错误2找不到类型或名称空间名称'tp'(您是否缺少using指令或程序集引用?)”

有人可以提供解决方案吗?

1 个答案:

答案 0 :(得分:0)

您必须动态构建通用方法的实例:

MethodInfo openChangeType = typeof(TConverter).GetMethod(nameof(TConverter.ChangeType));
MethodInfo closedChangeType = method.MakeGenericMethod(tp);
closedChangeType.Invoke(obj: null, "Test");