    

 ## On this page

  

 

 # Class LinkDictionaryCollectionBase&lt;T, TValue, TValueWrapper, TValueConverter\\&gt;

 Last update: 16.07.2025 

Namespace: [VM.Managed.Collections](VM.Managed.Collections.md)  
Assembly: VMAppCore.dll

```csharp
public class LinkDictionaryCollectionBase<T, TValue, TValueWrapper, TValueConverter> : LinkContainer, IObservableObject, IDisposableObject, ILinkable, IObject, ILinkContainer, IOwned, IHasID, IEventProvider, ILinkContainerEvent, IVerifiable, ILinkCollection, IPostDeserialized where T : class, ObjectBase where TValueConverter : struct, ILinkDictionaryValueConverter<TValue, TValueWrapper>

```

#### Type Parameters

`T`

`TValue`

`TValueWrapper`

`TValueConverter`

#### Inheritance

[object](https://learn.microsoft.com/dotnet/api/system.object) ← ObservableObject ← LinkableBase ← [LinkContainer](VM.Managed.LinkContainer.md) ← [LinkDictionaryCollectionBase&lt;T, TValue, TValueWrapper, TValueConverter&gt;](VM.Managed.Collections.LinkDictionaryCollectionBase-4.md)

#### Implements

IObservableObject, IDisposableObject, ILinkable, IObject, ILinkContainer, IOwned, IHasID, IEventProvider, [ILinkContainerEvent](VM.Managed.ILinkContainerEvent.md), [IVerifiable](VM.Managed.IVerifiable.md), [ILinkCollection](VM.Managed.Collections.ILinkCollection.md), IPostDeserialized

#### Inherited Members

[LinkContainer.SetModified()](VM.Managed.LinkContainer.md#VM_Managed_LinkContainer_SetModified), [LinkContainer.raise\_OnUpdating(object, LinkEventArgs)](VM.Managed.LinkContainer.md#VM_Managed_LinkContainer_raise_OnUpdating_System_Object_VM_Managed_LinkEventArgs_), [LinkContainer.raise\_OnUpdate(object, LinkEventArgs)](VM.Managed.LinkContainer.md#VM_Managed_LinkContainer_raise_OnUpdate_System_Object_VM_Managed_LinkEventArgs_), [LinkContainer.raise\_OnDestroying(object, LinkEventArgs)](VM.Managed.LinkContainer.md#VM_Managed_LinkContainer_raise_OnDestroying_System_Object_VM_Managed_LinkEventArgs_), [LinkContainer.raise\_OnDestroy(object, LinkEventArgs)](VM.Managed.LinkContainer.md#VM_Managed_LinkContainer_raise_OnDestroy_System_Object_VM_Managed_LinkEventArgs_), [LinkContainer.raise\_OnAdded(object, AddToDocEventArgs)](VM.Managed.LinkContainer.md#VM_Managed_LinkContainer_raise_OnAdded_System_Object_VM_Managed_AddToDocEventArgs_), [LinkContainer.raise\_OnRemoved(object, RemoveFromDocEventArgs)](VM.Managed.LinkContainer.md#VM_Managed_LinkContainer_raise_OnRemoved_System_Object_VM_Managed_RemoveFromDocEventArgs_), [LinkContainer.GetTargetListForUpdate()](VM.Managed.LinkContainer.md#VM_Managed_LinkContainer_GetTargetListForUpdate), [LinkContainer.SkipUpdateObjectImpl()](VM.Managed.LinkContainer.md#VM_Managed_LinkContainer_SkipUpdateObjectImpl), [LinkContainer.Initialize(Unit.ConvertFactor)](VM.Managed.LinkContainer.md#VM_Managed_LinkContainer_Initialize_VM_Unit_ConvertFactor_), [LinkContainer.SetFlagWhenXMLFile(string, bool)](VM.Managed.LinkContainer.md#VM_Managed_LinkContainer_SetFlagWhenXMLFile_System_String_System_Boolean_), [LinkContainer.IsSerializableEvent(Delegate)](VM.Managed.LinkContainer.md#VM_Managed_LinkContainer_IsSerializableEvent_System_Delegate_), [LinkContainer.CustomGetObjectData(SerializationInfo, StreamingContext)](VM.Managed.LinkContainer.md#VM_Managed_LinkContainer_CustomGetObjectData_System_Runtime_Serialization_SerializationInfo_System_Runtime_Serialization_StreamingContext_), [LinkContainer.GetSerializedData(SerializationInfo, StreamingContext)](VM.Managed.LinkContainer.md#VM_Managed_LinkContainer_GetSerializedData_System_Runtime_Serialization_SerializationInfo_System_Runtime_Serialization_StreamingContext_), [LinkContainer.LinkRequestUpdating(object, LinkEventArgs)](VM.Managed.LinkContainer.md#VM_Managed_LinkContainer_LinkRequestUpdating_System_Object_VM_Managed_LinkEventArgs_), [LinkContainer.LinkRequestUpdate(object, LinkEventArgs)](VM.Managed.LinkContainer.md#VM_Managed_LinkContainer_LinkRequestUpdate_System_Object_VM_Managed_LinkEventArgs_), [LinkContainer.LinkRequestDestroying(object, LinkEventArgs)](VM.Managed.LinkContainer.md#VM_Managed_LinkContainer_LinkRequestDestroying_System_Object_VM_Managed_LinkEventArgs_), [LinkContainer.LinkRequestDestroy(object, LinkEventArgs)](VM.Managed.LinkContainer.md#VM_Managed_LinkContainer_LinkRequestDestroy_System_Object_VM_Managed_LinkEventArgs_), [LinkContainer.LinkAddedToDocument(object, AddToDocEventArgs)](VM.Managed.LinkContainer.md#VM_Managed_LinkContainer_LinkAddedToDocument_System_Object_VM_Managed_AddToDocEventArgs_), [LinkContainer.LinkRemovedFromDocument(object, RemoveFromDocEventArgs)](VM.Managed.LinkContainer.md#VM_Managed_LinkContainer_LinkRemovedFromDocument_System_Object_VM_Managed_RemoveFromDocEventArgs_), [LinkContainer.OnLinkReserved(ILink, object, EventArgs)](VM.Managed.LinkContainer.md#VM_Managed_LinkContainer_OnLinkReserved_VM_Managed_ILink_System_Object_System_EventArgs_), [LinkContainer.CanBeDestroy(object)](VM.Managed.LinkContainer.md#VM_Managed_LinkContainer_CanBeDestroy_System_Object_), [LinkContainer.DisposeManagedResources()](VM.Managed.LinkContainer.md#VM_Managed_LinkContainer_DisposeManagedResources), [LinkContainer.SetContainer(IOwned, bool)](VM.Managed.LinkContainer.md#VM_Managed_LinkContainer_SetContainer_VM_Models_Pre_IOwned_System_Boolean_), [LinkContainer.OnChildUpdated(object, LinkEventArgs)](VM.Managed.LinkContainer.md#VM_Managed_LinkContainer_OnChildUpdated_System_Object_VM_Managed_LinkEventArgs_), [LinkContainer.OnContainerDestroy(object, LinkEventArgs)](VM.Managed.LinkContainer.md#VM_Managed_LinkContainer_OnContainerDestroy_System_Object_VM_Managed_LinkEventArgs_), [LinkContainer.OnDeserialization(object)](VM.Managed.LinkContainer.md#VM_Managed_LinkContainer_OnDeserialization_System_Object_), [LinkContainer.Verify(VerifiedResult)](VM.Managed.LinkContainer.md#VM_Managed_LinkContainer_Verify_VM_Managed_VerifiedResult_), [LinkContainer.GetCopy(object)](VM.Managed.LinkContainer.md#VM_Managed_LinkContainer_GetCopy_System_Object_), [LinkContainer.Dispose(bool)](VM.Managed.LinkContainer.md#VM_Managed_LinkContainer_Dispose_System_Boolean_), [LinkContainer.ClearChildInfoBeforeDeserialize](VM.Managed.LinkContainer.md#VM_Managed_LinkContainer_ClearChildInfoBeforeDeserialize), [LinkContainer.Container](VM.Managed.LinkContainer.md#VM_Managed_LinkContainer_Container), [LinkContainer.Owner](VM.Managed.LinkContainer.md#VM_Managed_LinkContainer_Owner), [LinkContainer.Document](VM.Managed.LinkContainer.md#VM_Managed_LinkContainer_Document), [LinkContainer.ID](VM.Managed.LinkContainer.md#VM_Managed_LinkContainer_ID), [LinkContainer.IsChildExternable](VM.Managed.LinkContainer.md#VM_Managed_LinkContainer_IsChildExternable), [LinkContainer.IsExternable](VM.Managed.LinkContainer.md#VM_Managed_LinkContainer_IsExternable), [LinkContainer.OnRemoved](VM.Managed.LinkContainer.md#VM_Managed_LinkContainer_OnRemoved), [LinkContainer.OnAdded](VM.Managed.LinkContainer.md#VM_Managed_LinkContainer_OnAdded), [LinkContainer.OnDestroy](VM.Managed.LinkContainer.md#VM_Managed_LinkContainer_OnDestroy), [LinkContainer.OnDestroying](VM.Managed.LinkContainer.md#VM_Managed_LinkContainer_OnDestroying), [LinkContainer.OnUpdate](VM.Managed.LinkContainer.md#VM_Managed_LinkContainer_OnUpdate), [LinkContainer.OnUpdating](VM.Managed.LinkContainer.md#VM_Managed_LinkContainer_OnUpdating), LinkableBase.OnDeserialization(object), ObservableObject.Dispose(), ObservableObject.RaisePropertyChanged(string), ObservableObject.RaisePropertyChanged(string, object, object), ObservableObject.Dispose(bool), ObservableObject.DisposeManagedResources(), ObservableObject.DisposeUnmanagedResources(), ObservableObject.IsDisposed, ObservableObject.TryDisposing, ObservableObject.Disposed, ObservableObject.Disposing, ObservableObject.PropertyChanged

#### Extension Methods

[LinkPropertyItemCache.GetLinkProperties(object, LinkPropertyType)](VM.Models.Pre.Cache.LinkPropertyItemCache.md#VM_Models_Pre_Cache_LinkPropertyItemCache_GetLinkProperties_System_Object_VM_Models_Pre_LinkPropertyType_), [LinkPropertyItemCache.GetLinkPropertiesAndValues(object, LinkPropertyType)](VM.Models.Pre.Cache.LinkPropertyItemCache.md#VM_Models_Pre_Cache_LinkPropertyItemCache_GetLinkPropertiesAndValues_System_Object_VM_Models_Pre_LinkPropertyType_), [LinkPropertyItemCache.GetLinkedObjects&lt;T&gt;(object, LinkPropertyType)](VM.Models.Pre.Cache.LinkPropertyItemCache.md#VM_Models_Pre_Cache_LinkPropertyItemCache_GetLinkedObjects__1_System_Object_VM_Models_Pre_LinkPropertyType_)

## Constructors

### LinkDictionaryCollectionBase()

```csharp
public LinkDictionaryCollectionBase()

```

### LinkDictionaryCollectionBase(IOwned)

```csharp
public LinkDictionaryCollectionBase(IOwned owner)

```

#### Parameters

`owner` IOwned

### LinkDictionaryCollectionBase(SerializationInfo, StreamingContext)

```csharp
protected LinkDictionaryCollectionBase(SerializationInfo info, StreamingContext context)

```

#### Parameters

`info` [SerializationInfo](https://learn.microsoft.com/dotnet/api/system.runtime.serialization.serializationinfo)

`context` [StreamingContext](https://learn.microsoft.com/dotnet/api/system.runtime.serialization.streamingcontext)

## Properties

### Count

```csharp
public virtual int Count { get; }

```

#### Property Value

[int](https://learn.microsoft.com/dotnet/api/system.int32)

### IsExternable

Gets a value indicating whether this instance is externable.

```csharp
public override bool IsExternable { get; }

```

#### Property Value

[bool](https://learn.microsoft.com/dotnet/api/system.boolean)

### IsReadOnly

```csharp
public virtual bool IsReadOnly { get; }

```

#### Property Value

[bool](https://learn.microsoft.com/dotnet/api/system.boolean)

### Keys

```csharp
public virtual ICollection<T> Keys { get; }

```

#### Property Value

[ICollection](https://learn.microsoft.com/dotnet/api/system.collections.generic.icollection-1)&lt;T&gt;

### Values

```csharp
public virtual ICollection<TValue> Values { get; }

```

#### Property Value

[ICollection](https://learn.microsoft.com/dotnet/api/system.collections.generic.icollection-1)&lt;TValue&gt;

### this\[T\]

```csharp
public virtual TValue this[T key] { get; set; }

```

#### Property Value

TValue

## Methods

### Add(T, TValue)

```csharp
public void Add(T key, TValue value)

```

#### Parameters

`key` T

`value` TValue

### Clear()

```csharp
public void Clear()

```

### ContainsKey(T)

```csharp
public bool ContainsKey(T key)

```

#### Parameters

`key` T

#### Returns

[bool](https://learn.microsoft.com/dotnet/api/system.boolean)

### ContainsPtrKey(UIntPtr)

```csharp
public bool ContainsPtrKey(UIntPtr key)

```

#### Parameters

`key` [UIntPtr](https://learn.microsoft.com/dotnet/api/system.uintptr)

#### Returns

[bool](https://learn.microsoft.com/dotnet/api/system.boolean)

### GetObjectDataImpl(SerializationInfo, StreamingContext)

```csharp
virtual void GetObjectDataImpl(SerializationInfo info, StreamingContext context)

```

#### Parameters

`info` [SerializationInfo](https://learn.microsoft.com/dotnet/api/system.runtime.serialization.serializationinfo)

`context` [StreamingContext](https://learn.microsoft.com/dotnet/api/system.runtime.serialization.streamingcontext)

### IsSerializableEvent(Delegate)

Determines whether is \[serializable event\] \[the specified delegate\].

```csharp
protected override bool IsSerializableEvent(Delegate del)

```

#### Parameters

`del` [Delegate](https://learn.microsoft.com/dotnet/api/system.delegate)

The delegate.

#### Returns

[bool](https://learn.microsoft.com/dotnet/api/system.boolean)

`true` if is \[serializable event\] \[the specified delegate\]; otherwise, `false`.

### LinkRequestDestroy(object, LinkEventArgs)

The destroy event occured from the linked object.

```csharp
protected override sealed void LinkRequestDestroy(object obNotifier, LinkEventArgs arg)

```

#### Parameters

`obNotifier` [object](https://learn.microsoft.com/dotnet/api/system.object)

`arg` [LinkEventArgs](VM.Managed.LinkEventArgs.md)

The destroy event information.

### LinkRequestUpdate(object, LinkEventArgs)

The update event occured from the linked object.

```csharp
protected override sealed void LinkRequestUpdate(object obNotifier, LinkEventArgs arg)

```

#### Parameters

`obNotifier` [object](https://learn.microsoft.com/dotnet/api/system.object)

`arg` [LinkEventArgs](VM.Managed.LinkEventArgs.md)

The update event information.

### Remove(T)

```csharp
public bool Remove(T key)

```

#### Parameters

`key` T

#### Returns

[bool](https://learn.microsoft.com/dotnet/api/system.boolean)

### TryGetValue(T, ref TValue)

```csharp
public bool TryGetValue(T key, ref TValue value)

```

#### Parameters

`key` T

`value` TValue

#### Returns

[bool](https://learn.microsoft.com/dotnet/api/system.boolean)

### raise\_CollectionChanged(object, NotifyCollectionChangedEventArgs)

```csharp
protected void raise_CollectionChanged(object objNotifier, NotifyCollectionChangedEventArgs e)

```

#### Parameters

`objNotifier` [object](https://learn.microsoft.com/dotnet/api/system.object)

`e` [NotifyCollectionChangedEventArgs](https://learn.microsoft.com/dotnet/api/system.collections.specialized.notifycollectionchangedeventargs)

### CollectionChanged

```csharp
public event NotifyCollectionChangedEventHandler CollectionChanged

```

#### Event Type

[NotifyCollectionChangedEventHandler](https://learn.microsoft.com/dotnet/api/system.collections.specialized.notifycollectionchangedeventhandler)