Я хочу просканировать тип на предмет его свойств и аннотированных атрибутов и вернуть объект со следующей структурой
public class PropertyContext
{
public object PropertyValue { get; set; }
public object SourceType { get; set; }
public Attribute Annotation { get; set; }
}
У меня есть этот запрос
var query = from property in _target.GetType().GetProperties()
from attribute in Attribute.GetCustomAttributes(property, true)
select new PropertyContext
{
Annotation = attribute,
SourceType = _target,
};
Это выполнено отложенопоэтому я генерирую PropertyContext
только тогда, когда они нужны вызывающему методу.
Теперь я хочу заполнить свойство PropertyValue
объекта PropertyContext
.
Чтобы получитьзначение свойства, которое у меня есть, вызывает другой компонент, подобный этому
_propertyValueAccessor.GetValue(_target, property)
Мой вопрос: как я могу изменить запрос таким образом, чтобы *
- значениечитается только один раз
- , но только если создается PropertyContext