Как встроить узел приложения с угловым расширением

Посмотрите библиотеку Heleonix.Reflection . Вы можете получить / установить / вызывать членов по путям или создать геттер / сеттер (lambda, скомпилированный в делегат), который быстрее, чем отражение. Например:

var success = Reflector.Get(DateTime.Now, null, "Date.Year", out int value);

Или создайте геттер один раз и кеш для повторного использования (это более результативно, но может вызывать исключение NullReferenceException, если промежуточный элемент равен нулю):

var getter = Reflector.CreateGetter("Date.Year", typeof(DateTime));
getter(DateTime.Now);

Или если вы хотите создать List> разных геттеров, просто укажите базовые типы для скомпилированных делегатов (типы конверсий будут добавлены в скомпилированные lambdas):

var getter = Reflector.CreateGetter("Date.Year", typeof(DateTime));
getter(DateTime.Now);

0
задан JJJ 31 December 2018 в 14:28
поделиться