csharp 查看对象的所有属性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了csharp 查看对象的所有属性相关的知识,希望对你有一定的参考价值。

public static string ReportAllProperties<T>(this T instance) where T : class
{
 
    if (instance == null)
        return string.Empty;
 
    var strListType = typeof(List<string>);
    var strArrType  = typeof(string[]);
 
    var arrayTypes   = new[] { strListType, strArrType };
    var handledTypes = new[] { typeof(Int32), typeof(String), typeof(DateTime), typeof(double), typeof(decimal), strListType, strArrType };
 
    var validProperties = instance.GetType()
                                  .GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
                                  .Where(prop => handledTypes.Contains(prop.PropertyType))
                                  .Where(prop => prop.GetValue(instance, null) != null)
                                  .ToList();
 
    var format = string.Format("{{0,-{0}}} : {{1}}", validProperties.Max(prp => prp.Name.Length));
 
    return string.Join(
             Environment.NewLine,
             validProperties.Select(prop => string.Format(format,
                                                          prop.Name,
                                                          (arrayTypes.Contains(prop.PropertyType) ? string.Join(", ", (IEnumerable<string>)prop.GetValue(instance, null))
                                                                                                  : prop.GetValue(instance, null)))));
}

以上是关于csharp 查看对象的所有属性的主要内容,如果未能解决你的问题,请参考以下文章

csharp 按属性名称获取对象的属性值

csharp 动态从C#对象获取属性值

csharp 在课堂上获取所有属性

csharp 遍历光线投射所有穿透的对象

csharp 修剪所有对象的字符串。

csharp BetterDefaultModelBinder意味着所有集合属性都被实例化为空集合而不是null。