最近、次のようなメソッドを含む WinRT クラス定義がありました。
public void Foo(string x){}
public void Foo(CustomClass x){}
コンパイラはエラーをスローしましたが、
Earlz.FooBar の 1 パラメーター オーバーロードには、Windows.Foundation.Metadata.DefaultOverloadAttribute で装飾することにより、既定のオーバーロードとして指定されたメソッドが 1 つだけ必要です。
この属性にはどのような意味がありますか? 私は WinRT プロジェクションがどのように機能するかについてよく知りませんが、私が書いているものは、最終的には一般に使用可能な API になります。だから、APIを使う人に苦痛を与えるようなことはしないようにしたいです。Foo
メソッドの名前を変更する必要がFooCustom
ありますか、またはより一般的に使用される関数で DefaultOverload を使用していますか?
また、この属性が何をするのか、なぜそれが必要なのかを調べてみましたが、MSDNは相変わらず詳細が不足しており、「メソッドがデフォルトのオーバーロードメソッドであることを示します」という一文の説明しかありませんでした。
この属性の主な理由は、Javascript がパラメーターの型ではなく、パラメーターの数のオーバーロードのみをサポートしているためだと思います。ただし、Javascript アプリは、型のオーバーロードを使用して既定以外の WinRT メソッドにどのようにアクセスするのでしょうか?