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工具需要该类布局.
谢谢!
您尚未在上面的代码中编写任何属性 - 您已声明了字段.在get和set确实做出了非常显著差异:)
如果你想获得字段,只需使用GetFields- 但我建议你改为使用它们.属性在绑定等方面更好地工作,并且通常是更好的封装开始.