我有一个带有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可以为我提供任何干净的方式来获取字符串 - >在后台进行日期时间转换?
答案 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;}
...
}