public Task <IBinding> TryCreateAsync(BindingProviderContext context) { if (context == null) { throw new ArgumentNullException(nameof(context)); } ParameterInfo parameter = context.Parameter; FtpAttribute attribute = parameter.GetCustomAttribute <FtpAttribute>(inherit: false); if (attribute == null) { return(Task.FromResult <IBinding>(null)); } string path = attribute.Path; if (_nameResolver != null) { path = _nameResolver.ResolveWholeString(path); } BindingTemplate bindingTemplate = BindingTemplate.FromString(path); bindingTemplate.ValidateContractCompatibility(context.BindingDataContract); IEnumerable <Type> types = StreamValueBinder.GetSupportedTypes(FileAccess.Read); if (!ValueBinder.MatchParameterType(context.Parameter, types)) { throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, "Can't bind FtpAttribute to type '{0}'.", parameter.ParameterType)); } return(Task.FromResult <IBinding>(new FtpBinding(_config, parameter, bindingTemplate))); }
public FtpBinding(FtpConfiguration config, ParameterInfo parameter, TraceWriter trace, FtpAttribute ftpAttribute) { _config = config; _parameter = parameter; _trace = trace; _ftpAttribute = ftpAttribute; }
public FtpValueBinder(IFtpClient client, FtpConfiguration config, FtpAttribute ftpAttribute) { _client = client; _config = config; _ftpAttribute = ftpAttribute; }