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;
 }