使用Castle ActiveRecord属性进行自动类型转换

时间:2009-09-25 21:27:28

标签: c# types type-conversion castle-activerecord implicit

我有一个带有DateTime属性的Castle ActiveRecord类。我正在从文本文件导入数据,并希望能够做到这样的事情:

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

在最终作业中,在幕后,理想情况下会检查date_started的类型,如果是DateTime,则执行作业,否则执行Convert.ToDateTime(date_started)

我无法覆盖访问器[*],隐式运算符仅在转换到包含类或从包含类转换时起作用。我尝试使用隐式运算符转换扩展DateTime,但发现它已被密封。现在我是一个非常不开心的动态程序员,陷入了一个静态类型的世界。

我当然可以“手动”进行检查,但我实例化了许多具有许多属性的不同对象,并且希望能够循环它们(使用反射),而不必给予特定属性特殊处理。我可以定义自己的自定义访问器,但在分配时需要特殊处理,因为它们需要像方法(setX(val))而不是属性(X = val)一样使用。

C#(2.0)或Castle ActiveRecord可以为我提供任何干净的方式来获取字符串 - >在后台进行日期时间转换?

1 个答案:

答案 0 :(得分:2)

使用FileHelpers导入文本数据。您的ActiveRecord类将使用ActiveRecord FileHelpers属性进行修饰,如下所示:

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