首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >扩展TypeConverter

扩展TypeConverter
EN

Stack Overflow用户
提问于 2009-01-19 19:54:44
回答 1查看 2.1K关注 0票数 3

DateTimeConverter类提供DateTime和string之间的转换。我也想支持DateTime和double之间的转换。

根据MSDN的说法,我可以扩展DateTimeConverter类来实现这一点-请参阅MSDN DateTimeConverter

我已经创建了一个继承自DateTimeConverter的类,并为CanConvertTo、CanConvertFrom等提供了适当的覆盖。

在调用以下代码时,如何确保框架使用我的DateTime转换器(DateTimeConverterEx),而不是BCL (DateTimeConverter)中提供的转换器?

代码语言:javascript
复制
    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));

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-01-19 19:56:58

您需要分配转换器。在逐个属性的基础上,您可以使用:

代码语言:javascript
复制
[TypeConverter(typeof(DateTimeConverterEx))]
public DateTime Foo {get {...} set {...}}

这将适用于表单的使用:

代码语言:javascript
复制
var prop = TypeDescriptor.GetProperties(obj)["Foo"];
var converter = prop.Converter;
// as before, using "converter"

这将适用于大多数常见的绑定方案。

(编辑)

any DateTime设置转换器

代码语言:javascript
复制
TypeDescriptor.AddAttributes(typeof(DateTime),
    new TypeConverterAttribute(typeof(DateTimeConverterEx)));

现在,您的示例代码应该可以工作了。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/458935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档