Javascript错误调用C#类的重载方法

时间:2012-05-25 21:06:38

标签: c# overloading jscript.net

我正在编写一个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认为它可以将数字转换为对象?为什么它认为它可以将类型强制转换为多种方法?只有一种方法需要两个参数。

这不是一个严重的问题,但是当我的库在调用代码时导致混乱的错误消息时,我不喜欢它。如果可以的话,我宁愿避免这样做。

0 个答案:

没有答案