【问题标题】:Automatic type conversion with Castle ActiveRecord properties使用 Castle ActiveRecord 属性进行自动类型转换
【发布时间】:2010-12-01 13:39:00
【问题描述】:

我有一个带有 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 能否为我提供任何干净的方法来在后台获取字符串 -> 日期时间转换?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-24
      • 1970-01-01
      • 2017-10-23
      • 1970-01-01
      • 2013-08-15
      相关资源
      最近更新 更多