0

我的代码:

    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 和 Decriction。我该怎么做????

4

2 回答 2

0

一个简单的解决方案,如果您只有 2 个不想显示的属性,就是专门过滤它们。您可以为此使用 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();
于 2013-03-06T11:06:10.040 回答
0

您需要向您希望/不想在列表中显示的字段添加一个属性,然后在完成后GetProperties()通过查找所述属性将它们过滤掉。

于 2013-03-06T11:03:55.793 回答