我最近有一个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方法?
答案 0 :(得分:4)
正如Jesse Jiang在this thread中所描述的那样:
JavaScript对区分重载方法的能力有限。因此,您需要更改函数名称,或设置Windows :: Foundation :: Metadata :: DefaultOverloadAttribute以设置默认重载函数。