【发布时间】:2018-08-22 22:17:35
【问题描述】:
首先让我说,我知道“PropertyType”属性。
所以我一直在使用通用转换器。
用法很简单;它看起来像这样:
int1 = TConverter.ChangeType<int>(strt1);
这样字符串就变成了 int (如果可以的话)。以上工作正常。然而,问题在于列出类型的尖括号之间的部分。我想在那里获取 PropertyInfo 的类型,但我看不到。
我已经简化为主要问题的代码如下所示:
foreach (PropertyInfo pi in props)
{
Type tp = pi.PropertyType;
var converted = TConverter.ChangeType<tp>("Test");
}
我想我一定是弄错了,因为尖括号的内容有问题。我收到此消息:“错误 2 找不到类型或命名空间名称 'tp'(您是否缺少 using 指令或程序集引用?)”
有人可以提供解决方案吗?
【问题讨论】:
-
看起来你正在尝试这样做:stackoverflow.com/questions/5961816/…
-
当你作为泛型的消费者编写代码时,你需要知道你在编译时提供的类型(事实上,在编译时,编译器必须决定
converted的类型,因为这就是var的意思)。这意味着您需要提供编译时类型或自己是通用类型并传递一些 your 类型参数。
标签: c# generics reflection