c# – 为什么WinRT中需要DefaultOverloadAttribute?

前端之家收集整理的这篇文章主要介绍了c# – 为什么WinRT中需要DefaultOverloadAttribute?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

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

虽然编译器抛出了错误

The 1-parameter overloads of Earlz.FooBar must have exactly one method specified as the default overload by decorating it with Windows.Foundation.Metadata.DefaultOverloadAttribute.

这个属性有什么样的含义?我不熟悉WinRT预测的工作方式,但我写的内容最终将成为一个公开可用的API.所以,我想确保我没有做一些会给使用API​​的人带来痛苦的事情.我应该将我的Foo方法重命名为FooCustom或其他类似的方法,还是在更常用的函数上使用DefaultOverload的方式去?

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

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

最佳答案
正如Jesse Jiang在this thread所描述的那样:

JavaScript has limited ability to differentiate overloaded methods. Therefore,you need to change the function name,or setting the Windows::Foundation::Metadata::DefaultOverloadAttribute to set the default overload function.

猜你在找的JavaScript相关文章