Существует ли метод .net, который определяет, был ли ранее задан данный метод для данного экземпляра объекта?определить, был ли метод уже вызван GetValue .net
Иногда метод геттера свойства имеет побочные эффекты. Например, свойство getter, если оно не вызвано ранее, может потребоваться создать дополнительные объекты и выполнить другую работу, чтобы вернуть значение поля поддержки. Я не могу этого случиться. Если метод getter ранее не был вызван, мне не нужно значение.
Например ...
object item = something;
foreach (PropertyInfo propertyInfoForItem in item.GetProperties(Reflection.BindingFlags.Public)) {
//Need something to avoid calling this if the property getter method has not been previously been called for this item
object itemPropertyValue = nothing;
itemPropertyValue = propertyInfoForItem.GetValue(item, null);
}
Я посмотрел через класс MethodInfo вернулся из PropertyInfo.GetGetMethod() и ничего не заметил, что там не поможет.
Любые идеи?
В качестве дополнительной заметки, основанной на обратной связи (и спасибо за вшивание!), Я не смог бы изменить существующие объекты, которые я просматриваю.
вы можете настроить счетчик в самом объекте. Я не думаю, что есть такой метод, который вы ищете. – singsuyash
, имеющий свойство getter, которое внезапно начинает создавать дополнительный объект или другие задачи, не является таким хорошим дизайном, я бы сказал ... Почему бы не убедиться, что ваши свойства getters предоставляют только значение и используют интерфейс INotifyPropertyChanged, чтобы указать, что что-то произошло? – Icepickle
Кстати, может быть, Interceptor может помочь в этом месте, просто это будет сильно зависеть от используемой инфраструктуры (IOC?) – Icepickle