public static string PropertyInfo(PropertyInfo info, bool includeDeclaringType = true)
{
string declTypeName = Type(info.DeclaringType);
string propTypeName = Type(info.PropertyType);
string[] paramNames = info.GetIndexParameters().Select(p => Type(p.ParameterType)).ToArray();
return string.Format(System.Globalization.CultureInfo.InvariantCulture,
"{0} {1}{2}{3}",
propTypeName,
includeDeclaringType ? declTypeName + "." : "",
info.Name,
paramNames.Any() ? "[" + paramNames.ToString(", ") + "]" : "");
}