/// <summary>
 /// Gets all types supported by an <see cref="IRegistryAdapter"/>
 /// </summary>
 /// <param name="adapter">The adapter to get the supported types of.</param>
 /// <returns>All types supported by this adapter.</returns>
 public static IEnumerable <Type> GetSupportedTypes(this IRegistryAdapter adapter)
 {
     return(adapter.GetType()
            .GetTypeInfo()
            .GetCustomAttributes <RegistryAdapterAttribute>()
            .Select(att => att.SupportedType));
 }
Ejemplo n.º 2
0
 public void RegisterAdapter(IRegistryAdapter adapter)
 {
     foreach (Type supportedType in adapter.GetSupportedTypes())
     {
         if (_adapters.ContainsKey(supportedType))
         {
             throw new ArgumentException($"Adapter for {supportedType} allready defined", nameof(adapter));
         }
         _adapters.Add(supportedType, adapter);
     }
 }
Ejemplo n.º 3
0
        public void UnregisterAdapter(IRegistryAdapter adapter)
        {
            var toBeRemoved = new LinkedList <Type>();

            foreach (KeyValuePair <Type, IRegistryAdapter> registryAdapter in _adapters)
            {
                if (registryAdapter.Value == adapter)
                {
                    toBeRemoved.AddLast(registryAdapter.Key);
                }
            }

            foreach (Type type in toBeRemoved)
            {
                _adapters.Remove(type);
            }
        }