2009-09-25 88 views
0

我有一個具有DateTime屬性的Castle ActiveRecord類。我從一個文本文件導入數據,並會喜歡能夠做這樣的事情:使用Castle ActiveRecord屬性自動進行類型轉換

string date_started = "09/25/2009"; 
MyClass myclass = new MyClass; 
myclass.date_started = date_started; 

在最後的分配,在幕後,那就最好檢查date_started的類型,如果是日期時間,做任務,否則做Convert.ToDateTime(date_started)

轉換或從包含類時,我不能重寫訪問器[*],和隱式運營商僅工作。我試着用隱式運算符轉換來擴展DateTime,但發現它被封了。現在我是一個陷入靜態類型世界的非常不愉快的動態程序員。

我當然可以檢查「手動」,但我實例化許多不同的對象具有許多屬性,並希望能夠循環它們(使用反射),而不必給予特定屬性的特殊處理。我可以定義自己的自定義訪問器,但這又需要在賦值時進行特殊處理,因爲它們需要像方法(setX(val))而不是屬性(X = val)一樣使用。

C#(2.0)或Castle ActiveRecord可以爲我提供任何干淨的方法來在後臺獲取String - > DateTime轉換嗎?

回答

2

使用FileHelpers來導入文本數據。您的ActiveRecord類將裝飾ActiveRecord FileHelpers屬性,如下所示:

[ActiveRecord] 
[DelimitedRecord("|")] // FileHelpers 
class MyClass { 
    [Property] // from ActiveRecord 
    [FieldConverter(ConverterKind.Date, "ddMMyyyy")] // from FileHelpers 
    public DateTime DateStarted {get;set;} 
    ... 
}