six*_*wns 3 .net c# typeconverter
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));
Run Code Online (Sandbox Code Playgroud)
谢谢.
Mar*_*ell 11
您需要分配转换器.在逐个房产的基础上,您可以使用:
[TypeConverter(typeof(DateTimeConverterEx))]
public DateTime Foo {get {...} set {...}}
Run Code Online (Sandbox Code Playgroud)
这将适用于表单的使用:
var prop = TypeDescriptor.GetProperties(obj)["Foo"];
var converter = prop.Converter;
// as before, using "converter"
Run Code Online (Sandbox Code Playgroud)
这适用于大多数常见的绑定方案.
(编辑)
要为任何 设置转换器DateTime
:
TypeDescriptor.AddAttributes(typeof(DateTime),
new TypeConverterAttribute(typeof(DateTimeConverterEx)));
Run Code Online (Sandbox Code Playgroud)
现在您的示例代码应该可行.