c#反映属性或其他成员类型

Gli*_*kot 1 c# reflection properties class

我正在使用一个名为filehelpers的工具,它为了文件导入而动态定义了一个类.类文件可能如下所示:

[DelimitedRecord(",")]
[IgnoreFirst(1)]
public class TestNoPrimaryKey
{

[FieldConverter(ConverterKind.Decimal, ".")]
[FieldQuoted()]
public decimal Value;

[FieldQuoted('"', QuoteMode.OptionalForRead, MultilineMode.AllowForRead)]
public String aString;

}
Run Code Online (Sandbox Code Playgroud)

这是从我能看到的代码中正确创建的.接下来我需要以可比较的格式创建一个数据表,所以我可以进行SQL插入.通过对SO的帮助我有这个代码接受类型(上面定义)并声称为我生成类型化的数据表列:

public static DataTable TypeToEmptyDataTable(Type myType)
{
    DataTable dt = new DataTable();

    foreach (PropertyInfo info in myType.GetProperties())
    {
        dt.Columns.Add(new DataColumn(info.Name, info.PropertyType));
    }

    return dt;
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,它没有找到任何属性并返回没有列的数据表.现在我在想 - 如果得到的话; 组; 类没有在类中指定,也许它们本身不是"属性".也许getMembers是我需要的?我尝试过,但返回info.MemberType不起作用.

关于如何从我的课程中获取名称/类型的任何想法?我不相信我可以添加get/set,因为我正在使用的filehelpers工具需要该类布局.

谢谢!

Jon*_*eet 6

您尚未在上面的代码中编写任何属性 - 您已声明了字段.在getset确实做出了非常显著差异:)

如果你想获得字段,只需使用GetFields- 但我建议你改为使用它们.属性在绑定等方面更好地工作,并且通常是更好的封装开始.