6

我最近有一个 WinRT 类定义,其方法如下:

public void Foo(string x){}
public void Foo(CustomClass x){}

编译器虽然抛出了一个错误

Earlz.FooBar 的 1 参数重载必须通过使用 Windows.Foundation.Metadata.DefaultOverloadAttribute 进行装饰,将一个方法指定为默认重载。

这个属性有什么样的含义?我不熟悉 WinRT 投影的工作原理,但我所写的最终将是一个可公开使用的 API。所以,我想确保我不会做任何会给使用 API 的人带来痛苦的事情。我应该将我的Foo方法重命名为FooCustom或类似,还是在更常用的函数上使用 DefaultOverload?

另外,我尝试查找此属性的作用以及为什么需要它,但MSDN像往常一样缺乏详细信息,只给出了单句描述“表示方法是默认的重载方法”

我认为这个属性的主要原因是因为 Javascript 只支持参数计数的重载,而不是参数类型。但是,Javascript 应用程序如何访问具有类型重载的非默认 WinRT 方法?

4

1 回答 1

5

正如 Jesse Jiang 在此线程中所描述的:

JavaScript 区分重载方法的能力有限。因此,您需要更改函数名称,或者设置 Windows::Foundation::Metadata::DefaultOverloadAttribute 来设置默认的重载函数。

于 2013-01-22T18:46:47.757 回答