Exemple #1
0
        public void RegisterComponentFactory(Type componentType, object factory)
        {
            Precondition.ArgumentNotNull(componentType, nameof(componentType));
            Precondition.ArgumentNotNull(factory, nameof(factory));
            Precondition.ArgumentCompatibleType(componentType, typeof(IComponent), nameof(componentType));

            _registeredComponentFactories.Add(componentType, factory);
        }
Exemple #2
0
        public void RegisterDefaultComponentType(Type propertyType, Type componentType)
        {
            Precondition.ArgumentNotNull(componentType, nameof(componentType));
            Precondition.ArgumentNotNull(propertyType, nameof(propertyType));
            Precondition.ArgumentCompatibleType(componentType, typeof(IComponent), nameof(componentType));

            if (_defaultComponenTypeForPropertyTypes.ContainsKey(propertyType))
            {
                _defaultComponenTypeForPropertyTypes.Remove(propertyType);
            }
            _defaultComponenTypeForPropertyTypes.Add(propertyType, componentType);
        }
Exemple #3
0
 public T CreateComponentFromComponentType <T>(Type componentType) where T : IComponent
 {
     Precondition.ArgumentNotNull(componentType, nameof(componentType));
     Precondition.ArgumentCompatibleType(componentType, typeof(IComponent), nameof(componentType));
     return((T)ComponentFactoryWrapper.From(_registeredComponentFactories[componentType]).Create());
 }