我正在编写一个C#类库,并从一些Javascript代码(技术上是Jscript.NET)调用它。我最近添加了一些重载方法,并且Javascript无法决定调用哪一个,因为它并不总是知道其变量的类型。我理解为什么在大多数情况下会发生这种情况,但我有一个我不理解的例子。
以下是C#类中重载的方法声明。
public virtual DeviceMessage RequestInUnits(
Command command,
int value,
UnitOfMeasure unit)
public virtual DeviceMessage RequestInUnits(
Command command,
Measurement measurement)
我的应用程序具有使用Jscript.NET的脚本功能。这是一些试图在C#类上调用其中一个方法的Javascript代码。
c.RequestInUnits(Command.MoveAbsolute, 0);
这不是合法的调用,因为具有两个参数的唯一方法需要Measurement
个对象作为第二个参数。但是,我希望类型不匹配错误。相反,这是我得到的编译错误。
More than one method or property matches this argument list at line 3 column 1
如果我将0
替换为""
,则会出现类型不匹配错误。为什么Javascript认为它可以将数字转换为对象?为什么它认为它可以将类型强制转换为多种方法?只有一种方法需要两个参数。
这不是一个严重的问题,但是当我的库在调用代码时导致混乱的错误消息时,我不喜欢它。如果可以的话,我宁愿避免这样做。