首先让我说说,我了解'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指令或程序集引用?)”
有人可以提供解决方案吗?
答案 0 :(得分:0)
您必须动态构建通用方法的实例:
MethodInfo openChangeType = typeof(TConverter).GetMethod(nameof(TConverter.ChangeType));
MethodInfo closedChangeType = method.MakeGenericMethod(tp);
closedChangeType.Invoke(obj: null, "Test");