public Task <IBinding> TryCreateAsync(BindingProviderContext context) { if (context == null) { throw new ArgumentNullException("context"); } ParameterInfo parameter = context.Parameter; TAttribute attributeSource = parameter.GetCustomAttribute <TAttribute>(inherit: false); if (attributeSource == null) { return(Task.FromResult <IBinding>(null)); } if (parameter.ParameterType != typeof(TUserType)) { return(Task.FromResult <IBinding>(null)); } Func <TAttribute, Task <TAttribute> > hookWrapper = null; if (_postResolveHook != null) { hookWrapper = (attrResolved) => _postResolveHook(attrResolved, parameter, _nameResolver); } var cloner = new AttributeCloner <TAttribute>(attributeSource, context.BindingDataContract, _nameResolver, hookWrapper); ParameterDescriptor param; if (_buildParameterDescriptor != null) { param = _buildParameterDescriptor(attributeSource, parameter, _nameResolver); } else { param = new ParameterDescriptor { Name = parameter.Name, DisplayHints = new ParameterDisplayHints { Description = "output" } }; } var binding = new ExactBinding(cloner, param, _buildFromAttr); return(Task.FromResult <IBinding>(binding)); }
public Task <IBinding> TryCreateAsync(BindingProviderContext context) { if (context == null) { throw new ArgumentNullException("context"); } var parameter = context.Parameter; var typeUser = parameter.ParameterType; if (typeUser.IsByRef) { return(Task.FromResult <IBinding>(null)); } var binding = ExactBinding.TryBuild(this, context); return(Task.FromResult <IBinding>(binding)); }