我有这个方法将对象转换为集合。 我将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
我该怎么做?
答案 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
作为示例,但您当然可以推送自己的属性。