[C#].NET/C#程序开发中获取一个实体类中的所有属性集合的方法有哪些呢?

.NET 作者: Rector 859阅读 0评论 0收藏 收藏本文

郑重申明:本文未经许可,禁止任何形式转载

问题描述

如题,在.NET/C#程序开发中,获取一个实体类中的所有属性集合的方法有哪些呢?

方案一

使用反射,如果是一个实例对象,则使用GetType()方法的GetProperties()

obj.GetType().GetProperties();

如果是一个System.Type,则:

typeof(Foo).GetProperties();

例如:

class Foo {
    public int A {get;set;}
    public string B {get;set;}
}
...
Foo foo = new Foo {A = 1, B = "abc"};
foreach(var prop in foo.GetType().GetProperties()) {
    Console.WriteLine("{0}={1}", prop.Name, prop.GetValue(foo, null));
}

方案二

使用反射来实现,以下方法返回的是一个属性名称-值对应的数据字典:

public static Dictionary<string, object> DictionaryFromType(object atype)
    {
        if (atype == null) return new Dictionary<string, object>();
        Type t = atype.GetType();
        PropertyInfo[] props = t.GetProperties();
        Dictionary<string, object> dict = new Dictionary<string, object>();
        foreach (PropertyInfo prp in props)
        {
            object value = prp.GetValue(atype, new object[]{});
            dict.Add(prp.Name, value);
        }
        return dict;
    }

以下方法只返回类的属性名称数组集合:

public static string[] PropertiesFromType(object atype)
    {
        if (atype == null) return new string[] {};
        Type t = atype.GetType();
        PropertyInfo[] props = t.GetProperties();
        List<string> propNames = new List<string>();
        foreach (PropertyInfo prp in props)
        {
            propNames.Add(prp.Name);
        }
        return propNames.ToArray();
    }

方案三

返回类的属性名称数组集合,如:

public List<string> GetPropertiesNameOfClass(object pObject)
{
    List<string> propertyList = new List<string>();
    if (pObject != null)
    {
        foreach (var prop in pObject.GetType().GetProperties())
        {
            propertyList.Add(prop.Name);
        }
    }
    return propertyList;
}

方案四

使用命名空间System.Reflection下的Type.GetProperties()方法,如:

PropertyInfo[] propertyInfos;
propertyInfos = typeof(MyClass).GetProperties(BindingFlags.Public|BindingFlags.Static);

阅读了该文章的人还浏览了...

本文永久链接码友网 » [C#].NET/C#程序开发中获取一个实体类中的所有属性集合的方法有哪些呢?

发布于: 2018-02-09 14:33:56
分享扩散:

文章评论

获取验证码