2009-09-25 77 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;} 
    ... 
}