私の目標は、遅延バインディングコード(つまり、CallSitesとBinders)を生成するようにコンパイラーに指示しながら、インテリセンスを使用できるようにすることです。
私が持っていると言う
class MyDynamicDataProvider
{
public int Data{get;set}
}
私が書きたい:
MyDynamicDataProvider provider = new MyDynamicDataProvider();
int x = provider.Data;
Dataプロパティの呼び出しをレイトバウンドにしたい。しかし現在、変数を動的として宣言しない場合provider
、コンパイラーは呼び出しを事前にバインドします。つまり、実行時に、プロパティのバッキングフィールドに格納されている値が返されます。
同時に、コーディング中にインテリセンスが必要です。つまり、適切なタイプを使用してプロバイダーを宣言する必要があります。
両端を同時に達成する方法はありますか(実行時に動的バインディングに依存しながら、インテリセンスの静的宣言を使用します)?
編集1:なぜゲッターを使って必要なロジックを実行しないのか不思議に思うかもしれません。問題は、私がいくつかのメタクラスを開発しようとしていることです。これにより、開発者は、動的な手段で魔法が起こっている間に、クラスとプロパティを定義し、ゲッター、セッター、メソッドなどを使用できます。そのようなタイプはたくさんあるので、クラス自体にそのような冗長なコードを避けたいと思います。
編集2:コンパイラーにそのメンバーへのすべての呼び出しをレイトバウンドするように指示する属性を持つクラスを宣言できれば素晴らしいでしょう。