private SimpleMappingConverter(ICollection <Tuple <TLeft, TRight> > mappings, SimpleMappingConverter <TLeft, TRight> .MappingBehavior behavior = SimpleMappingConverter <TLeft, TRight> .MappingBehavior.None, TRight defaultLeftToRight = default(TRight), TLeft defaultRightToLeft = default(TLeft)) { this.defaultLeftToRight = defaultLeftToRight; this.defaultRightToLeft = defaultRightToLeft; int count = mappings.Count; this.forwardMappingDictionary = new Dictionary <TLeft, TRight>(count); this.backwardMappingDictionary = new Dictionary <TRight, TLeft>(count); foreach (Tuple <TLeft, TRight> tuple in mappings) { SimpleMappingConverter <TLeft, TRight> .AddMapping <TLeft, TRight>(tuple.Item1, tuple.Item2, this.forwardMappingDictionary); SimpleMappingConverter <TLeft, TRight> .AddMapping <TRight, TLeft>(tuple.Item2, tuple.Item1, this.backwardMappingDictionary); } this.throwOnNullLeftValue = SimpleMappingConverter <TLeft, TRight> .CheckBehavior(behavior, SimpleMappingConverter <TLeft, TRight> .MappingBehavior.ThrowOnNullLeftValue); this.throwOnNullRightValue = SimpleMappingConverter <TLeft, TRight> .CheckBehavior(behavior, SimpleMappingConverter <TLeft, TRight> .MappingBehavior.ThrowOnNullRightValue); this.throwOnMissingLeftToRightMapping = SimpleMappingConverter <TLeft, TRight> .CheckBehavior(behavior, SimpleMappingConverter <TLeft, TRight> .MappingBehavior.ThrowOnMissingLeftToRightMapping); this.throwOnMissingRightToLeftMapping = SimpleMappingConverter <TLeft, TRight> .CheckBehavior(behavior, SimpleMappingConverter <TLeft, TRight> .MappingBehavior.ThrowOnMissingRightToLeftMapping); }
public TRight Convert(TLeft value) { return(SimpleMappingConverter <TLeft, TRight> .Convert <TLeft, TRight>(value, this.forwardMappingDictionary, this.throwOnNullLeftValue, this.throwOnMissingLeftToRightMapping, this.defaultLeftToRight)); }
public TLeft Reverse(TRight value) { return(SimpleMappingConverter <TLeft, TRight> .Convert <TRight, TLeft>(value, this.backwardMappingDictionary, this.throwOnNullRightValue, this.throwOnMissingRightToLeftMapping, this.defaultRightToLeft)); }
private static bool CheckBehavior(SimpleMappingConverter <TLeft, TRight> .MappingBehavior behavior, SimpleMappingConverter <TLeft, TRight> .MappingBehavior valueToCheck) { return((behavior & valueToCheck) == valueToCheck); }