我的目标是能够使用智能感知,同时仍然指示编译器生成后期绑定代码(即 CallSites 和 Binder)。
说我有
class MyDynamicDataProvider
{
public int Data{get;set}
}
我想写:
MyDynamicDataProvider provider = new MyDynamicDataProvider();
int x = provider.Data;
我希望 Data 属性调用是后期绑定的。然而目前,如果我不将provider
变量声明为动态的,编译器将预先绑定调用。即在运行时,将返回存储在属性的支持字段中的值。
同时,我想要在编码时进行智能感知,这意味着我应该使用适当的类型声明提供程序。
有没有办法同时实现两端(使用静态声明进行智能感知,同时在运行时依赖动态绑定)?
编辑 1:有人可能想知道为什么不只使用 getter 来执行我需要的任何逻辑。问题是我正在尝试开发一些元类,这将允许开发人员只定义类和属性,使用 getter、setter、方法等,而神奇的是通过动态方式发生的。会有很多这样的类型,我想在类本身中避免这样的冗余代码。
编辑2:如果我可以声明一个具有属性的类,该属性告诉编译器延迟绑定对其成员的所有调用,那就太好了。