C#7では、オブジェクトを一致する型のタプルに割り当てるときに呼び出されるDeconstruct
メソッドを実装できます。C#7:なぜタプルの分解がインターフェイスを通じて実装されていないのですか?
私はマイクロソフトがなぜこれを「魔法の方法」として実装することにしたのか疑問に思っています。この特別な名前のメソッドはどこから継承されていませんが、正しい名前を付けて正しいパラメータを入れると、このオブジェクトをそれぞれのタプルに割り当てることができます。
私は、設計チームがこの目的のためのインターフェイスを作成すると思います。以下のような
何か:もちろん
public interface IDecontructible<T1>
{
void Deconstruct(out T1 a);
}
public interface IDecontructible<T1, T2>
{
void Deconstruct(out T1 a, out T2 b);
}
public interface IDecontructible<T1, ... ,Tn>
{
void Deconstruct(out T1 a, ... ,out Tn n);
}
パラメータの数が異なる複数のインタフェースがあるとしています。
私が紛失しているこのデザインの選択肢には明らかな理由はありますか?
FWIWこの特定のビットの設計ノート[ここにあります](https://github.com/dotnet/csharplang/blob/master/meetings/2016/LDM-2016-05-03-04.md)、デコンスターティングのメインページ(https://github.com/dotnet/roslyn/blob/master/docs/features/deconstruction.md)のリンクを参照してください。 –
名前の推論はインタフェースでは不可能です。 –