2012-06-11 32 views
0

我爲我的android應用程序使用ORM系統(sqlite-net)。我希望能夠動態創建我的數據庫映射類,並且能夠向成員添加屬性,這可能嗎?我需要創建這樣的動態:使用動態字段和屬性在運行時創建c#對象

class ConfigData 
{ 
    [PrimaryKey, AutoIncrement] 
    public int id { get; set; } 
    [MaxLength(20)] 
    public string ip { get; set; } 
    [MaxLength(128)] 
    public string port { get; set; } 
} 

在此先感謝。

+1

見http://stackoverflow.com/questions/646258/how-can-i-add-dynamically-field-to-the -class-in-c-sharp和http://stackoverflow.com/questions/6166236/add-properties-at-runtime和http://stackoverflow.com/questions/1653046/what-are-the-true-benefits -of-expandoobject - 它已經在StackOverdlow上很好地覆蓋了。 – dash

+2

它確實取決於消耗對象的內容。不同的API支持不同的模型。有時你只是有反思;有時你有ComponentModel;有時你可能會使用'dynamic'。真的很依賴誰來消費它。 「僅反射」是「可以工作的地方」選項,但需要諸如「TypeBuilder」之類的東西。另外,雖然:在編譯時定義'ConfigData'有什麼問題? –

+0

這裏的問題是,我試圖在不同的表結構之間創建一個小版本轉換器。例如,我想知道如何在版本5中命名ConfigData版本10中的字段ip(因爲我需要導出到以前的版本)。我需要這個從一個表格版本的數據提供到另一個下面。這就是爲什麼我想根據我想要獲得的版本動態定義ConfigData的原因。無論如何,我現在正在考慮使用類/成員屬性,並看看我能否以更簡單的方式完成此任務。 – Notbad

回答

0

它可能在C#4.0中使用動態類型。

+0

是不是可以使用Reflection和TypeBuilder類? –

+0

多一點信息會受到歡迎。那麼ExpandoObject呢? – Notbad

+2

@Notbad確實,ExpandoObject是'dynamic'的一個方便和通用的實現。 –

相關問題