反射属性信息:如何在运行时仅显示某些属性



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();

相关内容

  • 没有找到相关文章

最新更新