Jul 29, 2008 - LINQ To XML、というレベルまで到達していないけど
XElementクラスにDateTimeやTimeSpanのインスタンスを追加するだけでxs:dateTime型やxs:duration型のデータを格納できるのは便利でよいのですが、 逆にDateTimeやTimeSpanのインスタンスを取得するために明示的な型変換でないと得られないのは困ります。
IronPython 2.0 Beta (2.0.0.2000) on .NET 2.0.50727.3031
Copyright (c) Microsoft Corporation. All rights reserved.
>>> import clr
>>> clr.AddReference( 'System.Xml.Linq' )
>>> from System import *
>>> from System.Xml.Linq import *
>>> x=XElement('X', TimeSpan(1,2,3,4,567) )
>>> # IronPythonからどうやってxのTimeSpanを取り出せばよいのだろう?
ちなみに、IronPython2.0B2では、Microsoft.Scripting.Runtime.Castクラスがあって、 Explicitメソッドで型変換できるのですが、これを使ってXElementオブジェクトの型変換はできません。 Cast.csの中を見れば明らかで、 Int32, Double, Boolean, Int64, Int16, UInt32, UInt64, UInt16, SByte, Byte, Single, Char, Decimal への型変換しか実装されていません。
>>> clr.AddReference('Microsoft.Scripting.Core' )
>>> from Microsoft.Scripting.Runtime import *
>>> Cast.Explicit( 123, Double )
123.0