Во-первых, я боюсь проблемы утечки памяти здесь.Потому что я использую некоторый словарь для хранения метаданных с ключом самого объекта.Поэтому я могу искать метаданные (которые должны быть динамическими), передавая объект.
Обратите внимание, что у этого объекта нет GUID, который помогает идентифицировать себя, единственный способ идентифицировать его - это его экземпляр.Этот вид хранения очень похож на то, что в DependencyObject
в WPF.Мы можем объявить DependencyProperty
(прикрепленное свойство) для расширения DependencyObject
(метаданные содержатся во вложенном свойстве).
Вот что у меня есть:
Dictionary<object, SomeMetaData> _metadataLookup = new Dictionary<object,SomeMetaData>();
//to store metadata
_metadataLookup[someObject] = someMetaData;
//to get metadata
SomeMetaData someMetaData;
_metadataLookup.TryGetValue(someObject, out someMetaData);
Было быбудет хорошо, если время жизни someObject
совпадает с временем жизни области с использованием _metadataLookup
.Но что, если someObject
(после сохранения в _metadataLookup
) должен быть уничтожен (логически неиспользованным)?Мы также должны вручную удалить его из _metadataLookup
, в противном случае происходит утечка памяти.
Я ищу лучшее решение для этой проблемы, неожиданно забывая удалить объекты вручную или просто не знаякогда объекты должны быть удалены, проблема здесь.Благодаря.