0

是否可以通过反射或其他方式更改.net中字段/属性的数据类型?

我正在寻找此功能,因为强类型数据集中存在问题。强类型数据集不能灵活地更改可为空类型的数据类型。在此处查看相关链接。因此,如果有可能在运行时更改数据类型,则可以消除此问题。另外,添加;根据此MSDN 链接;微软团队不是很热衷于提供这种支持。

4

3 回答 3

1

首先,这不是错误;这是由于 dbnull (即未知值)和 null (即无处指向的引用)之间的差异。从 Connect 和其他地方的一些不透明和无益的回应来看,微软自己似乎不善于解释这一事实,这使情况更加复杂。

此问题有多种解决方案,具体取决于您要实现的目标。如果您正在使用数据绑定,那么绑定机制主要为您透明地处理它;如果您直接在代码中访问数据集,则设计器将构建 Isxxxnull / setxxxnull 方法供您在使用之前检查值。最后,您可以将数据类型更改为 system.object,或者您可以根据需要在设计器中改写 NullValue 以输入另一个值,只要该值对数据类型有效 - 例如,0 或 -1 用于 int。

于 2013-10-15T18:25:09.693 回答
0

不是我知道的。类型信息和绑定在编译类型中确定,因此无法在运行时更改它。

用于更改类型的一种模式是适配器模式。这可以通过所有其他字段,然后将相关字段“转换”为新类型。当然,这也发生在编译时。

如果您对您正在尝试做的事情进行更多扩展,可能会有更好的选择。

于 2013-10-15T17:24:00.920 回答
0

Datasets 相当过时并且源于.net v1.0。微软永远不会对它们进行更改或添加。一般来说,更好的方法是强类型 POCO。您甚至可以创建多个使用相同后备存储(对象类型)的强类型属性。在访问相应的属性之前,您需要测试正确的类型。

于 2013-10-15T17:33:57.737 回答