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)));
        }
Example #2
0
 public FtpBinding(FtpConfiguration config, ParameterInfo parameter, TraceWriter trace, FtpAttribute ftpAttribute)
 {
     _config       = config;
     _parameter    = parameter;
     _trace        = trace;
     _ftpAttribute = ftpAttribute;
 }
 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;
 }
 public FtpValueBinder(IFtpClient client, FtpConfiguration config, FtpAttribute ftpAttribute)
 {
     _client = client;
     _config = config;
     _ftpAttribute = ftpAttribute;
 }