예제 #1
0
        public void Add(Type commonType, BinaryCallTarget implementation, TypeConverter resultConverter)
        {
            TypePair       key = new TypePair(commonType, commonType);
            DispatchRecord rec = new DispatchRecord(key, commonType, null, null, resultConverter, implementation);

            Add(rec);
        }
예제 #2
0
 public DispatchRecord(TypePair key, Type commonType, TypeConverter arg1Converter, TypeConverter arg2Converter,
                       TypeConverter resultConverter, BinaryCallTarget implementation)
 {
     Key             = key;
     CommonType      = commonType;
     Arg1Converter   = arg1Converter;
     Arg2Converter   = arg2Converter;
     ResultConverter = resultConverter;
     Implementation  = implementation;
     SetupEvaluationMethod();
 }
예제 #3
0
 public void SetupEvaluationMethod()
 {
     if (ResultConverter == null)
     {
         if (Arg1Converter == null && Arg2Converter == null)
         {
             Evaluate = EvaluateConvNone;
         }
         else if (Arg1Converter != null && Arg2Converter == null)
         {
             Evaluate = EvaluateConvLeft;
         }
         else if (Arg1Converter == null && Arg2Converter != null)
         {
             Evaluate = EvaluateConvRight;
         }
         else // if (Arg1Converter != null && arg2Converter != null)
         {
             Evaluate = EvaluateConvBoth;
         }
     }
     else
     {
         //with result converter
         if (Arg1Converter == null && Arg2Converter == null)
         {
             Evaluate = EvaluateConvNoneConvResult;
         }
         else if (Arg1Converter != null && Arg2Converter == null)
         {
             Evaluate = EvaluateConvLeftConvResult;
         }
         else if (Arg1Converter == null && Arg2Converter != null)
         {
             Evaluate = EvaluateConvRightConvResult;
         }
         else // if (Arg1Converter != null && Arg2Converter != null)
         {
             Evaluate = EvaluateConvBothConvResult;
         }
     }
 }
예제 #4
0
 //Adds a base record with identical argument types
 public void Add(Type commonType, BinaryCallTarget implementation)
 {
     Add(commonType, implementation, null);
 }