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); }