如何在C#中遍历泛型类的属性?

查克·坦顿(Chuck Tenton)

我正在使用一个Web应用程序,该应用程序以适当的价格和链接在用户的屏幕上打印各种计算机部件,用户可以选择这些部件。我使用MongoDB存储数据,并使用通用类动态选择适当的类(每个实现IProduct并具有唯一的属性)。

考虑以下方法:

public HtmlString DatabaseResult<T>(string collectionName)
    where T : IProduct 
    {
        var collection = db.GetCollection<T>(collectionName);
        var buildString = "";
        var query =
        from Product in collection.AsQueryable<T>()
        where Product.Prijs == 36.49
        orderby Product.Prijs
        select Product;
        PropertyInfo[] properties = typeof(T).GetProperties();
        foreach (T item in query){
            buildString = buildString + "<p>";
            foreach (PropertyInfo property in properties)
            {
                buildString = buildString + " " + item.property; //Error Here
            }
            buildString = buildString + "</p>";
        }
        HtmlString result = new HtmlString(buildString);
        return result;
    }

我在哪里尝试遍历实现IProduct的类的属性。每个这样做的类具有4个共同的属性,和3个不同的属性。这就是为什么我需要以编程方式遍历属性。我意识到使用反射在实际类上使用属性是行不通的。这是我的错误(在上面的方法中,当我在上面的注释中出现错误)

'T' does not contain a definition for 'property' and no extension method 'property' accepting a first argument of type 'T' could be found (are you missing a using directive or an assembly reference?)

结果应该是这样的:

"<p>" 
+(value of Motherboard.Price) (value of Motherboard.Productname) 
(value of Motherboard.Productlink) value of Motherboard.YetAnotherAttribute).... etc+
"</p>"

我这样做的理想方法是否可能?我正在寻找解决问题的方法,甚至可能在必要时重新设计我的代码。在此先感谢您的回答。

学习

改变

buildString = buildString + " " + item.property; 

buildString = buildString + " " + property.GetValue(item, null).ToString();
//or
buildString = String.Format("{0} {1}", buildString, property.GetValue(item, null));

PropertyInfo.GetValue 我相信从.NET 4.5开始不需要第二个参数

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在C#中找到泛型类的属性?

来自分类Dev

如何在C#中的泛型类中使用泛型类的对象?

来自分类Dev

C#覆盖泛型类中的基类属性

来自分类Dev

我如何通过 C# 访问泛型类中的动态类属性?

来自分类Dev

如何在C#中收集具有泛型类型的静态类的所有“实例”?

来自分类Dev

如何在C#中访问泛型静态类的所有特定版本?

来自分类Dev

C#如何在方法中获取泛型类引用

来自分类Dev

如何在C#中调用泛型重载方法

来自分类Dev

如何在C#中从泛型创建对象

来自分类Dev

如何在C#中从泛型创建对象

来自分类Dev

如何在C#中创建泛型方法重载?

来自分类Dev

如何在泛型类中返回“ this”?

来自分类Dev

C#如何在泛型类型实现某些类时强制转换类

来自分类Dev

在c#中遍历泛型类型列表

来自分类Dev

自动实现的属性类的C#泛型

来自分类Dev

c# 泛型类的模式匹配属性?

来自分类Dev

如何在没有反射的情况下确定Java中泛型属性的类类型?

来自分类Dev

当基类在C#中是泛型时,如何将子类转换为基类

来自分类Dev

如何在C#中使用抽象约束实例化泛型类

来自分类Dev

如何在C#泛型中将子代转换为父类

来自分类Dev

如何在C#中使用抽象约束实例化泛型类

来自分类Dev

如何在C#中将类与泛型类型进行比较

来自分类Dev

在C#中的函数中访问泛型类型的属性

来自分类Dev

在C#中的基类中使用泛型:如何确保基类中的方法返回派生类的类型?

来自分类Dev

C ++中的泛型类

来自分类Dev

如何从WPF控件继承并在C#中同时使用泛型类?

来自分类Dev

C#中的多类泛型集合

来自分类Dev

C#在方法调用中扩展泛型类

来自分类Dev

在C#中创建泛型类的字典的辅助方法

Related 相关文章

  1. 1

    如何在C#中找到泛型类的属性?

  2. 2

    如何在C#中的泛型类中使用泛型类的对象?

  3. 3

    C#覆盖泛型类中的基类属性

  4. 4

    我如何通过 C# 访问泛型类中的动态类属性?

  5. 5

    如何在C#中收集具有泛型类型的静态类的所有“实例”?

  6. 6

    如何在C#中访问泛型静态类的所有特定版本?

  7. 7

    C#如何在方法中获取泛型类引用

  8. 8

    如何在C#中调用泛型重载方法

  9. 9

    如何在C#中从泛型创建对象

  10. 10

    如何在C#中从泛型创建对象

  11. 11

    如何在C#中创建泛型方法重载?

  12. 12

    如何在泛型类中返回“ this”?

  13. 13

    C#如何在泛型类型实现某些类时强制转换类

  14. 14

    在c#中遍历泛型类型列表

  15. 15

    自动实现的属性类的C#泛型

  16. 16

    c# 泛型类的模式匹配属性?

  17. 17

    如何在没有反射的情况下确定Java中泛型属性的类类型?

  18. 18

    当基类在C#中是泛型时,如何将子类转换为基类

  19. 19

    如何在C#中使用抽象约束实例化泛型类

  20. 20

    如何在C#泛型中将子代转换为父类

  21. 21

    如何在C#中使用抽象约束实例化泛型类

  22. 22

    如何在C#中将类与泛型类型进行比较

  23. 23

    在C#中的函数中访问泛型类型的属性

  24. 24

    在C#中的基类中使用泛型:如何确保基类中的方法返回派生类的类型?

  25. 25

    C ++中的泛型类

  26. 26

    如何从WPF控件继承并在C#中同时使用泛型类?

  27. 27

    C#中的多类泛型集合

  28. 28

    C#在方法调用中扩展泛型类

  29. 29

    在C#中创建泛型类的字典的辅助方法

热门标签

归档