Я читал около dynamic
и его вклад в развитие языка. DLR управляет любым вызовом члена объекта (dynamic
), для этого он использует механизмы отражения. Но я не могу понять поведение типа DyamicObject (внутренне).Как работает C# DynamicObject?
Когда вы унаследовали от DynamicObject вы получите возможность создать что-то вроде существующего ExpandoObject, вам нужно перезаписать TrySetMember, TryGetMember и другие методы. Мой вопрос: когда вы делаете object.method, как это передается TryGetMember нашего класса, на первый взгляд, кажется, что DynamicObject ограничена в DLR, но я сомневаюсь в этом.
Вы пробовали прочитать книгу или какой-нибудь форум, описывающий динамические объекты? Или, по крайней мере, вы задали Google тот же вопрос? –
@OleksandrPshenychnyy i google it, но все результаты, где о функциональности, я ищу вещи позади. В книгах и материалах у меня красный, все объясняют возможности, но ничего не говорят о внутренней реализации. – agarwaen
Я читал об этом в книге Джеффри Рихтера «CLR via C#». Это очень много, чтобы объяснить, и я не уверен, что все это помню - вам лучше это прочитать. Коротко говоря, он компилирует несколько версий кода, который вы пишете с помощью операторов «If», проверяющих результат динамического объекта .GetType(). Если он не может предсказать тип, он использует отражение. –