DateTimeConverter 类提供 DateTime 和字符串之间的转换。我还想支持 DateTime 和 double 之间的转换。
根据 MSDN,我可以扩展 DateTimeConverter 类来执行此操作 - 请参阅MSDN 日期时间转换器 http://msdn.microsoft.com/en-us/library/system.componentmodel.datetimeconverter.aspx
我创建了一个继承自 DateTimeConverter 的类,并为 CanConvertTo、CanConvertFrom 等提供适当的重写。
当调用下面的代码时,如何确保框架使用我的 DateTime 转换器 (DateTimeConverterEx) 而不是 BCL (DateTimeConverter) 中提供的转换器?
DateTime dt = DateTime.Now;
// This line returns a DateTimeConverter which I don't want.
// Would like to get a DateTimeConverterEx.
TypeConverter tc = TypeDescriptor.GetConverter(dt);
double dbl = (double)tc.ConvertTo(dt, typeof(double));
Thanks.
您需要分配转换器。在逐个房产的基础上,您可以使用:
[TypeConverter(typeof(DateTimeConverterEx))]
public DateTime Foo {get {...} set {...}}
这将适用于以下形式的使用:
var prop = TypeDescriptor.GetProperties(obj)["Foo"];
var converter = prop.Converter;
// as before, using "converter"
这适用于大多数常见的绑定场景。
(edit)
将转换器设置为any DateTime
:
TypeDescriptor.AddAttributes(typeof(DateTime),
new TypeConverterAttribute(typeof(DateTimeConverterEx)));
现在您的示例代码应该可以工作了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)