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