/// <inheritdoc /> public void Assign(IReflectExtensionProperties reflector, IExtension extension, IConsumeConfiguration consumer, IHaveConversionCallbacks conversionCallbacksProvider, IHaveDefaultConversionCallback defaultConversionCallbackProvider) { Ensure.ArgumentNotNull(reflector, "reflector"); Ensure.ArgumentNotNull(consumer, "consumer"); Ensure.ArgumentNotNull(conversionCallbacksProvider, "conversionCallbacksProvider"); Ensure.ArgumentNotNull(defaultConversionCallbackProvider, "defaultConversionCallbackProvider"); var properties = reflector.Reflect(extension).ToList(); IDictionary <string, IConversionCallback> conversionCallbacks = conversionCallbacksProvider.ConversionCallbacks; IConversionCallback defaultCallback = defaultConversionCallbackProvider.DefaultConversionCallback; foreach (KeyValuePair <string, string> keyValuePair in consumer.Configuration) { KeyValuePair <string, string> pair = keyValuePair; var matchedProperty = properties.SingleOrDefault(property => property.Name.Equals(pair.Key, StringComparison.OrdinalIgnoreCase)); if (matchedProperty == null) { continue; } IConversionCallback conversionCallback; if (!conversionCallbacks.TryGetValue(pair.Key, out conversionCallback)) { conversionCallback = defaultCallback; } matchedProperty.SetValue(extension, conversionCallback.Convert(pair.Value, matchedProperty), null); } }
public AssignExtensionPropertiesTest() { this.consumer = A.Fake <IConsumeConfiguration>(); this.extensionPropertyReflector = A.Fake <IReflectExtensionProperties>(); this.conversionCallbacksProvider = A.Fake <IHaveConversionCallbacks>(); this.defaultConversionCallbackProvider = A.Fake <IHaveDefaultConversionCallback>(); this.conversionCallback = A.Fake <IConversionCallback>(); this.testee = new AssignExtensionProperties(); }