Моя цель - иметь возможность использовать intellisense, в то же время инструктируя компилятор генерировать код позднего связывания (т. Е. CallSites and Binder).
Скажи, что у меня
class MyDynamicDataProvider
{
public int Data{get;set}
}
Я хочу написать:
MyDynamicDataProvider provider = new MyDynamicDataProvider();
int x = provider.Data;
Я хочу, чтобы вызов свойства Data имел позднюю привязку. Однако в настоящее время, если я не объявлю переменную provider
как динамическую, компилятор будет предварительно связывать вызов. во время выполнения будет возвращено значение, сохраненное в вспомогательном поле свойства.
В то же время я хочу использовать intelllisense при кодировании, что означает, что я должен объявить провайдера, используя соответствующий тип.
Есть ли способ одновременного достижения обоих концов (используя статические объявления для intellisense, полагаясь на динамическое связывание во время выполнения)?
Редактировать 1:
Можно задаться вопросом, почему бы просто не использовать геттер для выполнения любой логики, которая мне нужна. Дело в том, что я пытаюсь разработать некоторые мета-классы, которые позволили бы разработчикам просто определять классы и свойства, использовать методы получения, установки, методы и т. Д., В то время как магия происходит с помощью динамических средств. Таких типов было бы много, и я бы хотел избежать такого избыточного кода в самих классах.
Редактировать 2: Было бы неплохо, если бы я мог объявить класс с атрибутом, который сообщает компилятору о поздней привязке всех вызовов к его членам.