下位のインターフェイスまたは基本クラスをより派生したクラスにキャストするという意味での動的キャストを意味するのではなく、作成したインターフェイス定義を取得し、そのインターフェイスに、それから派生していない別のオブジェクトを動的にキャストすることを意味しますインターフェイスですが、すべての呼び出しをサポートしています。
例えば、
interface IMyInterface
{
bool Visible
{
get;
}
}
TextBox myTextBox = new TextBox();
IMyInterface i = (dynamic<IMyInterface>)myTextBox;
これは、既知の型のコンパイル時、および動的に宣言されたインスタンスの実行時に実現できます。インターフェースの定義は型 (この例では) と同様に既知であるため、コンパイラは、オブジェクトがインターフェースによって定義された呼び出しをサポートしているかどうかを判断し、キャストを行うための魔法を実行できます。
私の推測では、これは C#4 ではサポートされていません (参照を見つけることができませんでした) が、確実に知りたいです。そうでない場合は、言語の将来のバリアントに含めるかどうか、およびその理由と反対の理由について話し合いたいと思います。私には、既存のフレームワークの型をラップするためにまったく新しい型を作成する必要なく、コードでより多くのポリモーフィズムを可能にすることは素晴らしい追加のように思えます。
更新
誰かが盗作で私を非難しないように、私はJon Skeetがすでにこれを提案していることに気づいていませんでした. ただし、非常によく似た構文を考えたことを知ってうれしいです。これは、少なくとも直感的である可能性があることを示唆しています。一方、「独創的なアイデアを持つ」ことは、別の日の私のバケット リストに残っています。