<PackageReference Include="Castle.Core" Version="3.0.0.3001" />

DictionaryAdapterMeta

public class DictionaryAdapterMeta
using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Linq; namespace Castle.Components.DictionaryAdapter { [DebuggerDisplay("Type: {Type.FullName,nq}")] public class DictionaryAdapterMeta { private IDictionary extendedProperties; public Type Type { get; set; } public object[] Behaviors { get; set; } public DictionaryDescriptor Descriptor { get; set; } public IDictionaryAdapterFactory Factory { get; set; } public IDictionaryInitializer[] Initializers { get; set; } public IDictionaryMetaInitializer[] MetaInitializers { get; set; } public IDictionary<string, PropertyDescriptor> Properties { get; set; } public IDictionary ExtendedProperties { get { if (extendedProperties == null) extendedProperties = new Dictionary<object, object>(); return extendedProperties; } } public DictionaryAdapterMeta(Type type, IDictionaryInitializer[] initializers, IDictionaryMetaInitializer[] metaInitializers, object[] behaviors, IDictionary<string, PropertyDescriptor> properties, DictionaryDescriptor descriptor, IDictionaryAdapterFactory factory) { Type = type; Factory = factory; Descriptor = descriptor; Initializers = initializers; MetaInitializers = metaInitializers; Behaviors = behaviors; Properties = properties; InitializeMeta(factory); } private void InitializeMeta(IDictionaryAdapterFactory factory) { if (Descriptor != null) MetaInitializers = MetaInitializers.Prioritize(Descriptor.MetaInitializers).ToArray(); IDictionaryMetaInitializer[] metaInitializers = MetaInitializers; foreach (IDictionaryMetaInitializer dictionaryMetaInitializer in metaInitializers) { dictionaryMetaInitializer.Initialize(factory, this); } } } }