如何获得类属性

时间:2015-08-12 10:33:57

标签: c#

我有这个方法将对象转换为集合。 我将class作为参数对象传递给此方法

PropertyInfo[] properties = type.GetProperties();

在这一行

{System.Web.Mvc.Async.AsyncManager AsyncManager}
{System.Web.Mvc.IActionInvoker ActionInvoker}
{System.Web.HttpContextBase HttpContext}
.
.
.

我获得了每个公共财产,如

{System.Web.Mvc.Async.AsyncManager AsyncManager}
{System.Web.Mvc.IActionInvoker ActionInvoker}
{System.Web.HttpContextBase HttpContext}
.
.
.

我想得到我写过的财产,没有

clear:left

我该怎么做?

1 个答案:

答案 0 :(得分:1)

如果您只想要当前类型的属性,即不是基类,请执行以下操作:

PropertyInfo[] properties = type.GetProperties( BindingFlags.Instance |
                                                BindingFlags.DeclaredOnly |
                                                BindingFlags.Public );

但是,为了获得额外的灵活性,我建议使用属性来标记您希望包含的属性:

class Foo
{
    [Serializable]
    public string WeWantThis { get; set; }

    public string ButNotThis { get; set; }
}

然后,对于每个PropertyInfo,使用PropertyInfo.GetCustomAttributes检查是否已应用该属性。我使用内置的SerializableAttribute作为示例,但您当然可以推送自己的属性。