0

我有一个带有 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 可以为我提供任何干净的方法来在后台获取 String -> DateTime 转换吗?

4

1 回答 1

2

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

[ActiveRecord]
[DelimitedRecord("|")] // FileHelpers
class MyClass {
   [Property] // from ActiveRecord
   [FieldConverter(ConverterKind.Date, "ddMMyyyy" )] // from FileHelpers
   public DateTime DateStarted {get;set;}
   ...
}
于 2009-09-26T11:58:26.483 回答