public async Task <IValueProvider> BindAsync(object value, ValueBindingContext context) { TTriggerValue val = value as TTriggerValue; if (val == null) { if (_directInvoker != null && (value is string str)) { // Direct invoke case. Need to converrt String-->TTriggerValue. val = await _directInvoker(new DirectInvokeString(str), _attribute, context); } else { // How is this possible? throw new NotImplementedException(); } } TUserType result = await _converter(val, _attribute, context); DirectInvokeString invokeString = await _getInvokeString(val, _attribute, context); IValueProvider vp = new ConstantValueProvider(result, typeof(TUserType), invokeString.Value); return(vp); }
protected override async Task <IValueProvider> BuildAsync(TAttribute attrResolved, ValueBindingContext context) { string invokeString = Cloner.GetInvokeString(attrResolved); object obj = await _builder(attrResolved, _parameter.ParameterType); IValueProvider vp = new ConstantValueProvider(obj, _parameter.ParameterType, invokeString); return(vp); }
protected override async Task <IValueProvider> BuildAsync(TAttribute attrResolved, ValueBindingContext context) { string invokeString = Cloner.GetInvokeString(attrResolved); var obj = await _buildFromAttr(attrResolved); IValueProvider vp = new ConstantValueProvider(obj, typeof(TUserType), invokeString); return(vp); }
protected override Task <IValueProvider> BuildAsync( TAttribute attrResolved, ValueBindingContext context) { string invokeString = Cloner.GetInvokeString(attrResolved); object obj = _buildFromAttribute(attrResolved); TUserType finalObj; if (_converter == null) { finalObj = (TUserType)obj; } else { var intermediateObj = (TType)obj; finalObj = _converter(intermediateObj, attrResolved, context); } IValueProvider vp = new ConstantValueProvider(finalObj, typeof(TUserType), invokeString); return(Task.FromResult(vp)); }
protected override async Task <IValueProvider> BuildAsync( TAttribute attrResolved, ValueBindingContext context) { string invokeString = Cloner.GetInvokeString(attrResolved); object obj = await _buildFromAttribute(attrResolved, null, context); object finalObj; if (_converter == null) { finalObj = obj; } else { finalObj = await _converter(obj, attrResolved, context); } IValueProvider vp = new ConstantValueProvider(finalObj, _parameterType, invokeString); return(vp); }