0

DateTime プロパティを持つ Castle ActiveRecord クラスがあります。テキストファイルからデータをインポートしていますが、次のようなことができるようになりたいと思っています:

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

最終的な割り当てでは、舞台裏で、理想的には のタイプをチェックし、date_startedDateTime の場合は割り当てを行い、それ以外の場合は を行いますConvert.ToDateTime(date_started)

アクセサー[*]をオーバーライドすることはできません。暗黙の演算子は、含まれているクラスとの間で変換する場合にのみ機能します。暗黙の演算子変換で DateTime を拡張しようとしましたが、封印されていることがわかりました。今、私は静的に型付けされた世界で立ち往生している非常に不幸な動的プログラマーです。

もちろん、「手動で」チェックを行うこともできますが、多くのプロパティを持つさまざまなオブジェクトをインスタンス化しており、特定のプロパティを特別に処理することなく、(リフレクションを使用して) それらをループできることを望んでいました。setX(val)独自のカスタム アクセサーを定義することもできますが、プロパティ ( ) ではなくメソッド ( ) のように使用する必要があるため、割り当て時に特別な処理が必要になりますX = val

C# (2.0) または Castle ActiveRecord は、バックグラウンドで String -> DateTime 変換を取得するクリーンな方法を提供できますか?

4

1 に答える 1

2

FileHelpersを使用してテキスト データをインポートします。ActiveRecord クラスは、次のように ActiveRecord属性FileHelpers 属性の両方で装飾されます。

[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 に答える