问题标签 [iconvertible]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4241 浏览

c# - MySQL 数据提供程序 - 无法将“System.Byte []”类型的对象转换为“System.IConvertible”类型

我的实体框架上下文遇到了一些困难,这证明调试起来非常麻烦。我昨天向我的应用程序添加了一项功能,该功能为我的一个实体提供了一个额外的子实体集合(称为模型),并且在我查询父对象时将我的一个表达式更新为 Include() 该集合后,我的查询失败了当另一个之前运行良好的集合是 Include()'d 时,会出现 InvalidCastException。


我摆弄了表达式并删除了不同的集合/更改了 Include() 的子项,发现正是这种精确的项目组合导致了上述异常。如果我删除其中任何一个 Includes() 也不例外,但是对于这三个孩子,每次我尝试拉出在集合中具有一个或多个实体的单个产品时都会有一个。如果我删除 FirstOrDefault(p => p.ID == id) 或集合为空,则不会引发异常。ColorsColors

似乎模型集合的添加是我查询的断点,但我真的不知道为什么。

异常的确切来源是Mysql.Data堆栈跟踪读取:

实体定义(仅限相关字段)

产品

  • intID
  • EntityCollection<ProductColorOption>颜色
  • EntityCollection<ProductImage>图片
  • EntityCollection<ProductModel>楷模

产品颜色

  • intID

产品颜色选项

  • intID
  • int产品编号
  • int产品颜色ID

产品型号

  • intID
  • int产品编号

产品形象

  • intID
  • int产品编号
  • sbyte?命令

关系

  • Product.ID FKProductImage.ProductID (一对多)
  • Product.ID FKProductColorOption.ProductID (一对多)
  • Product.ID FKProductModel.ProductID (一对多)
  • ProductColor.ID FKProductColorOption.ProductColorID (一对多)

谢谢大家!


更新

下面高斯汀的建议解决了问题(不再例外),但并没有真正针对实际问题。出于这个原因,我将把这个问题“悬而未决”。

更新 2

我现在意识到该错误与实体框架无关,而是与 MySQL 数据提供程序有关。出于某种原因,它将 ProductColor.ID 视为 byte[],然后尝试将其盲目地转换为 int。这根本不是实体框架问题。诅咒你Sun Microsystems ORACLE。

0 投票
1 回答
358 浏览

c# - 如何检查两种类型是否可以比较、求和等?

如果给定两种类型(类型 a,类型 b),是否有任何“好”的方法来确定这两种类型是否可以进行比较、求和等?

我在想如果类型实现IConvertible,可以将两者都转换为让我们说十进制并执行“ Convert.ToDecimal(a) > Convert.ToDecimal(b)”?

我正在构建一个表达式评估器,并且希望能够使用任何类型的对象,因此需要知道一个类型是否可以与另一种类型进行比较(它不必在两边都是相同的类型。例如。double > int

0 投票
1 回答
3924 浏览

sql - 对象必须实现 IConvertible?

在解决“将数据类型 nvarchar 转换为日期时间时出错”错误后得到此信息。使用 Vb.net/SQL Server 2000 通过 gridview/sqldatasource 更新一行:

存储过程:

SQL 数据源:

我暂时将 Date_Start 和 Date_End 参数设置为最小日期,直到我弄清楚是什么原因造成的。

有任何想法吗?

0 投票
1 回答
3680 浏览

.net - 为什么 Convert.ChangeType 采用对象参数?

该类Convert自 .NET 1.0 以来一直存在。从那时起,该IConvertible界面也已存在。

Convert.ChangeType方法适用于实现类型的对象IConvertible(其实除非我记错了,该类提供的所有转换方法Convert都是这种方式)。那么为什么是参数类型object呢?

换句话说,而不是这样:

为什么不是这个签名?

对我来说似乎很奇怪。

0 投票
1 回答
497 浏览

linq - “无法实例化”NHibernate.QueryException 通过组合 Linq 查询引发

执行以下 NHibernate.Linq 语句会引发"could not instantiate: Reservation001.Services.ReservationDto"NHibernate.QueryException 包含内部 InvalidCast 异常(“对象必须实现 IConvertible。”):

但是,将上述内容拆分为两个查询后,在第一个查询的结果上调用 ToList(),代码执行得很好。

为什么单语句版本会引发异常?

谢谢你,

0 投票
6 回答
59779 浏览

c# - 错误:对象必须实现 IConvertible

当我收到以下错误时,我正在尝试将每个列表框项的列表框项和文本框值插入数据库。

如果我尝试仅插入列表框项目我成功但是当我尝试插入文本框值时出现此错误。你能告诉我我做错了什么吗?


c# 代码


我想将列表框的所有值添加到数据库中。

其次,即使我尝试使用 .

选定项

然后我收到以下错误。

知道我哪里出错了吗?

0 投票
1 回答
163 浏览

c# - Matisses Linq IConvertible 异常 Matisse C#

嘿,伙计们,从 matisse 对象数据库中检索记录时遇到问题,现在它得到了我...基本上尝试了一切,甚至使用计数消息框显示 linq 查询正在检索 1 个对象,但是当它出现 IConvertible 错误时应该可以工作,基本上我正在尝试编辑现有记录,但是它告诉我它需要是 IConvertible 但是这在使用 SQL 时会起作用,并且它也适用于使用 Matisse 的其他人。

0 投票
1 回答
2600 浏览

c# - IConvertible 接口如何与 DataRow 一起使用?

我只是想知道Convert类和IConvertible接口如何与DataRow. 如果我有这个代码:

调用Convert.ToInt32(s)将运行以下命令:

那么这如何与这样的一行代码一起工作:

当 DataRow 和对象都没有实现 IConvertible 时?

0 投票
0 回答
345 浏览

c# - CA2225、IConvertible 和发布构建性能

我正在创建一个公开显式和隐式转换运算符的对象。代码分析建议我还创建命名方法来匹配(CA2225:运算符重载已命名替代)。另外,我选择实现IConvertible,它包含一堆 ToXXX 方法,尽管它需要一个IFormatProvider作为参数。

其中大多数是执行相同代码的替代方法,所以我想知道在发布模式下编译时是否会优化/内联我的调用以消除性能问题,这样我就不必重复代码。

例如:

0 投票
1 回答
4789 浏览

c# - 为不可修改的类型实现类似 IConvertible 的功能

简而言之,我有一个问题IConvertible:如果DateTimeOffset实施IConvertible,我不会有问题。

你不能使用扩展方法来实现一个接口,所以这条路是封闭的。结构 DateTimeOffset 不是部分的,因此不能以这种方式扩展。

在阅读一些 MSDN 文档时,我遇到了TypeCode枚举,这似乎是 IConvertible 正常工作所必需的。令我失望的是,枚举也不包含 TimeSpan,这关闭了使用带有and的类似Tuple结构的选项(即=P)DateTimeTimeSpanDateTimeOffset

我的问题如下:您将如何实现具有基本 IConvertible 或类似支持的 DateTimeOffset 等效项?

该实现涉及具有[index,TType] where TType : IConvertible(setter、getter 和 try-getter)功能的花哨的惰性字典实现,并且它需要能够存储特定于时区的数据。

到目前为止我的想法:

  • 创建一个新的ISuperConvertible接口,它实际上只是一个扩展IConvertibleDateTimeOffset一个特例。这通常会破坏我们对 IConvertible 的支持,但适用于这种非常具体的情况。优点和缺点?

  • 使用两个“槽”来存储DateTimeOffsets,一个用于存储,一个DateTime用于半int小时偏移(所有时区都不是整小时 =/)。然后我们失去了cache[ApplicationStrings.LastUpdate, default : DateTimeOffset.Min]功能。

这些代表了我的主要想法,即 break DateTimeOffsetand keepIConvertible或 break IConvertibleand keep DateTimeOffset

我对 C# 的内在特性仍然很陌生,因此任何见解都会有所帮助。你觉得呢?你有没有什么想法?

编辑:补充:

  • 现在有一个使用 DateTime(固定时区)的工作解决方案,但现在也需要时区,最佳方案是在任何地方都使用 DateTimeOffset。本质上的问题不是重构,而是我的具体问题。
  • 这是一个相当大的应用程序,它使用实体框架和其他更模糊的框架来与不同的服务和存储进行通信,因此保持它是一个简单的系统定义类型不会破坏 LINQ-to-X 优化等(我不知道这些有多难)是自己做的)。
  • 我反对拆分数据,因为我不知道其他人何时会出现并注意到有一个 DateTime 用于时间戳,并且在不考虑偏移量(时区)的情况下使用它。