我正在使用一個名爲filehelpers的工具,它定義了一個用於文件導入的動態類。類文件可能如下所示:c#反映屬性或其他成員類型
[DelimitedRecord(",")]
[IgnoreFirst(1)]
public class TestNoPrimaryKey
{
[FieldConverter(ConverterKind.Decimal, ".")]
[FieldQuoted()]
public decimal Value;
[FieldQuoted('"', QuoteMode.OptionalForRead, MultilineMode.AllowForRead)]
public String aString;
}
這是從我能看到的代碼中正確創建的。接下來,我需要以可比較的格式創建一個數據表,所以我可以做一個SQL插入。通過對實物幫助,所以我有這樣的代碼,它接受的類型(如上定義)和意圖產生的輸入數據表列對我來說:
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;
}
不幸的是,它沒有找到任何屬性,並返回沒有列的DataTable 。現在我在想 - 如果得到;組;等等在課堂上沒有指定,可能它們本身不是'屬性'。也許getMembers是我需要的?我試過,但返回info.MemberType沒有工作。
有關如何從我的課程中獲取名稱/類型的任何想法?我不相信我可以添加get/set,因爲我使用的文件保護工具需要該類佈局。
謝謝!
完美,非常感謝Jon。如果我通常使用這個類,我肯定會使用屬性,但是由於它在這種情況下的目的幾乎是一個文件定義,所以getfields聽起來很棒。乾杯 – Glinkot 2011-06-09 13:11:05