Изменения документа Tools.Collections
                  Редактировал(а) Alexandr Fokin 2023/01/11 15:18
              
      
      От версии  9.1 
    
    
              отредактировано Alexandr Fokin
        
на 2020/09/19 19:20
     на 2020/09/19 19:20
      Изменить комментарий:
              К данной версии нет комментариев
          
         
      К версии  8.1 
    
    
              отредактировано Alexandr Fokin
        
на 2020/06/14 12:30
     на 2020/06/14 12:30
      Изменить комментарий:
              К данной версии нет комментариев
          
         Сводка
- 
          Свойства страницы (2 изменено, 0 добавлено, 0 удалено)
- 
          Объекты (0 изменено, 0 добавлено, 2 удалено)
Подробности
- Свойства страницы
- 
      - Название
-   ... ... @@ -1,1 +1,1 @@ 1 - Tools.Collections1 +ManagetLinkCollection 
- Содержимое
-   ... ... @@ -6,7 +6,7 @@ 6 6 Для обеспечения оптимистичной блокировки в LinkStorage используется специальный item с полем Stamp, по которому проверяется не был ли изменен элемент во время операции. 7 7 (Подробнее смотри ConcurrentDictionary) 8 8 9 -**1) Link ItemDictionary**9 +**1) LinkStorage** 10 10 Интерфейс: 11 11 12 12 AddLink ... ... @@ -33,8 +33,8 @@ 33 33 То удалить запись 34 34 35 35 36 -**2) ObjectLink ItemDictionary**37 -Данная коллекция оборачивает Link ItemDictionary, добавляя к контракту сущность объекта, ссылающегося на запись.36 +**2) ObjectLinkStorage** 37 +Данная коллекция оборачивает LinkStorage, добавляя к контракту сущность объекта, ссылающегося на запись. 38 38 Все объекты, ссылающиеся на запись храняться в ImmutableHashSet. 39 39 40 40 При AddLink, помимо увеличения счетчика в HashSet записи добавляется ссылающийся объект. 
 
- XWiki.XWikiComments[0]
-   - Автор
-   ... ... @@ -1,1 +1,0 @@ 1 -XWiki.cccc1808 
- Комментарий
-   ... ... @@ -1,6 +1,0 @@ 1 -На основе материала, приведенного по 2 ссылке. Можно реализовать удаление из ConcurrentDictionary только при определенных условиях. 2 -В данном проекте используется RemoveLinkItem, для проверки что счетчик ссылок <= 0. 3 -Но в целом можно реализовать передачу любого делегата с условием. (И производит удаление только в случае, когда условие истинно) 4 - 5 -Таким образом получив интерфейс 6 -RemoveIf(TKey key, Func<TKey, TValue, bool> needRemove) 
- Дата
-   ... ... @@ -1,1 +1,0 @@ 1 -2020-06-14 12:34:08.197 
 
- XWiki.XWikiComments[1]
-   - Автор
-   ... ... @@ -1,1 +1,0 @@ 1 -XWiki.cccc1808 
- Комментарий
-   ... ... @@ -1,2 +1,0 @@ 1 -Возможно, в данном случае, для проверки оптимистичной блокировки было бы достаточно ReferenceEquals. (Вместо Stamp) 2 -Т.к. Item иммутабелен. 
- Дата
-   ... ... @@ -1,1 +1,0 @@ 1 -2020-06-14 12:57:26.227 
 
