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