DateTimeConverter类提供DateTime和string之间的转换。我也想支持DateTime和double之间的转换。
根据MSDN的说法,我可以扩展DateTimeConverter类来实现这一点-请参阅MSDN DateTimeConverter
我已经创建了一个继承自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));谢谢。
发布于 2009-01-19 19:56:58
您需要分配转换器。在逐个属性的基础上,您可以使用:
[TypeConverter(typeof(DateTimeConverterEx))]
public DateTime Foo {get {...} set {...}}这将适用于表单的使用:
var prop = TypeDescriptor.GetProperties(obj)["Foo"];
var converter = prop.Converter;
// as before, using "converter"这将适用于大多数常见的绑定方案。
(编辑)
为any DateTime设置转换器
TypeDescriptor.AddAttributes(typeof(DateTime),
new TypeConverterAttribute(typeof(DateTimeConverterEx)));现在,您的示例代码应该可以工作了。
https://stackoverflow.com/questions/458935
复制相似问题