1

我正在尝试将对象列表转换为数据表,并使用此响应https://stackoverflow.com/a/5805044/1447718中给出的解决方案。

我下载了超属性并将其重新编译为 4.5.2 并在我的应用程序中使用它。当我执行该方法时,我得到一列的空数据集。在调试时,我发现该行

PropertyDescriptorCollection properties =
            TypeDescriptor.GetProperties(typeof(T));

给出计数为 0 的属性对象。
我尝试将行替换为

PropertyDescriptorCollection properties =
            TypeDescriptor.GetProperties(data.First().GetType()); 

仍然没有运气。

谁能帮忙?谢谢。

4

1 回答 1

1

来自评论:

public class RequestData {
    public string d;
    public DataType t;
    public int i;
}

这些是字段,而不是属性。该PropertyDescriptor模型专注于属性,坦率地说,公共领域只是一种反模式。考虑将这些变成属性。在最简单的情况下,只需{get;set;}在每个之后添加,就完成了。

public class RequestData {
    public string d {get;set;}
    public DataType t {get;set;}
    public int i {get;set;}
}

就我个人而言,我会将它们重命名为更有意义,但这不会改变它们的工作方式。

于 2020-03-26T21:42:57.437 回答