Example #1
0
        internal bool TryBindToScalarValue(
            IValueDescriptor valueDescriptor,
            IValueSource valueSource,
            out BoundValue boundValue)
        {
            if (valueSource.TryGetValue(valueDescriptor, this, out var value))
            {
                if (value == null || valueDescriptor.Type.IsInstanceOfType(value))
                {
                    boundValue = new BoundValue(value, valueDescriptor, valueSource);
                    return(true);
                }
                else
                {
                    var parsed = ArgumentConverter.ConvertObject(
                        valueDescriptor as IArgument ?? new Argument(valueDescriptor.ValueName),
                        valueDescriptor.Type,
                        value);

                    if (parsed is SuccessfulArgumentConversionResult successful)
                    {
                        boundValue = new BoundValue(successful.Value, valueDescriptor, valueSource);
                        return(true);
                    }
                }
            }

            boundValue = null;
            return(false);
        }
Example #2
0
 internal bool TryBind(
     IValueDescriptor valueDescriptor,
     IValueSource valueSource,
     out BoundValue boundValue)
 {
     if (valueSource.TryGetValue(valueDescriptor, this, out var value))
     {
         boundValue = new BoundValue(value, valueDescriptor, valueSource);
         return(true);
     }
     else
     {
         boundValue = null;
         return(false);
     }
 }
Example #3
0
 internal bool TryBindToScalarValue(
     IValueDescriptor valueDescriptor,
     IValueSource valueSource,
     out BoundValue boundValue)
 {
     if (valueSource.TryGetValue(valueDescriptor, this, out var value))
     {
         if (valueDescriptor.Type.IsInstanceOfType(value))
         {
             boundValue = new BoundValue(value, valueDescriptor, valueSource);
             return(true);
         }
         else
         {
             boundValue = null;
             return(false);
         }
     }
     else
     {
         boundValue = null;
         return(false);
     }
 }