private static Dictionary<string, ParameterInfo> GetBindingProperties(Link link)
 {
     var props = link.GetType()
         .GetTypeInfo()
         .DeclaredProperties 
         .Select(p => new ParameterInfo()
         {
             PropertyInfo = p,
             Attribute =  p.GetCustomAttributes<LinkParameterAttribute>()
             .FirstOrDefault()
         })
         .ToDictionary(pi =>
         {
             return pi.Attribute == null ? pi.PropertyInfo.Name.ToLowerInvariant() : pi.Attribute.Name;
         }, pr => pr);
     return props;
 }
        private static Dictionary <string, ParameterInfo> GetBindingProperties(Link link)
        {
            var props = link.GetType()
                        .GetTypeInfo()
                        .DeclaredProperties
                        .Select(p => new ParameterInfo()
            {
                PropertyInfo = p,
                Attribute    = p.GetCustomAttributes <LinkParameterAttribute>()
                               .FirstOrDefault()
            })
                        .ToDictionary(pi =>
            {
                return(pi.Attribute == null ? pi.PropertyInfo.Name.ToLowerInvariant() : pi.Attribute.Name);
            }, pr => pr);

            return(props);
        }