my code:
namespace Reflection
{
class Program
{
static void Main(string[] args)
{
Type t = typeof(Product);
PropertyInfo[] proInfo = t.GetProperties();
foreach (var item in proInfo)
{
Console.WriteLine(item.Name);
}
}
}
public class Product
{
public int ProId { get; set; }
public string ProName { get; set; }
public string Description { get; set; }
public decimal UnitPrice { get; set; }
}
我得到所有属性名称作为输出。但是我不想在输出中显示ProId和description .我该怎么做????
你需要添加一个属性字段,你要么做/不想在你的列表中显示,然后过滤他们之后做GetProperties()
通过寻找说的属性。
如果你只有两个不想显示的属性,一个简单的解决方案就是对它们进行过滤。你可以使用LINQ的Where:
Type t = typeof(Product);
PropertyInfo[] proInfo = t.GetProperties().Where( p => p.Name != "ProdId" && p.Name != "Description").ToArray() ;
foreach (var item in proInfo)
{
Console.WriteLine(item.Name);
}
或者甚至像这样:
string[] dontShow = { "ProId", "Descrpition" };
Type t = typeof(MyObject);
PropertyInfo[] proInfo = t.GetProperties()
.Where(p => !dontShow.Contains(p.Name)).ToArray();