Esempio n. 1
0
        public SceneBehaviorFactoryProvider(IEnumerable <ISceneBehaviorFactory> factories)
        {
            var factoriesArray = factories as ISceneBehaviorFactory[] ?? factories.ToArray();

            if (MultipleImplementationsValidator.ShouldThrow(factoriesArray, f => f.BehaviorName, out var exceptionMessage))
            {
                throw new ArgumentException(exceptionMessage, nameof(factories));
            }

            _factories = factoriesArray.ToDictionary(f => f.BehaviorName);
        }
        public ComponentFactoryProvider(IEnumerable<IComponentFactory> factories)
        {
            var factoriesArray = factories as IComponentFactory[] ?? factories.ToArray();

            if (MultipleImplementationsValidator.ShouldThrow(factoriesArray, factory => factory.ComponentType,
                out var componentTypeExceptionMessage))
            {
                throw new ArgumentException(componentTypeExceptionMessage, nameof(factories));
            }

            if (MultipleImplementationsValidator.ShouldThrow(factoriesArray, factory => factory.ComponentId, out var componentIdExceptionMessage))
            {
                throw new ArgumentException(componentIdExceptionMessage, nameof(factories));
            }

            _factoriesByType = factoriesArray.ToDictionary(f => f.ComponentType);
            _factoriesById = factoriesArray.ToDictionary(f => f.ComponentId);
        }