尝试从属性信息获取泛型类型



让我首先说,我知道'PropertyType'属性。

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

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

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

所以这个字符串变成和 int(如果可以的话(。以上工作正常。但是,问题在于列出类型的尖括号之间的部分。我想在那里获取属性信息的类型,但我看不到。

我已简化为主要问题的代码如下所示:

foreach (PropertyInfo pi in props)
{
Type tp = pi.PropertyType;
var converted = TConverter.ChangeType<tp>("Test");
}

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

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

您必须动态构建泛型方法的实例:

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

最新更新