扩展类型转换器

2024-04-02

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(使用前将#替换为@)

扩展类型转换器 的相关文章

随机推荐

  • 为什么 Annotate(blame) 的用户名与 IntelliJ IDEA 中提交的作者不同?

    当我在 IntelliJ IDEA 中使用 git annotate 时 某些行的作者用户名与此提交的作者姓名不同 如下图 如你看到的 fan qp and Qp不一样 为什么会这样呢 当我使用 bash 或 SourceTree 运行时g
  • 从服务器删除所有数据库

    我有一台服务器 SQL Server 2005 里面有300多个数据库 我不想逐个右键单击并选择Delete 如何轻松删除所有数据库 You can do this through the SSMS GUI Select the Datab
  • Google 会抓取 AJAX 内容吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 在我网站的主页上 我使用 JQuery 的 ajax 函数来下拉用户最近活动的列表 最近的活动显示在页面上 并且最近活动的每一行都包含
  • 当想要批量返回x个元素组时MySQL选择查询

    如何通过单个查询批量返回选择结果 这应该是一个直接的复合选择 下面是一个示例表和一个简单的查询 它将通过当前使用在最终现实世界过程中无法工作的临时数字列来生成所需的结果 仅涉及两个关键列 ip addresses and oid addre
  • 按 List 的变量之一对 List 进行排序

    我有1级 public class Class1 public Class String s int s1 int soc this s s this s1 s1 this soc soc 我有一个List of Class1 List
  • PowerMock 抛出 NoSuchMethodError (setMockName)

    我正在尝试使用模拟构造函数PowerMockito但每次运行测试时都会出现以下错误 java lang NoSuchMethodError org mockito internal creation MockSettingsImpl set
  • 在 AJAX 请求之前使用 JavaScript 获取日期

    我有这个 AJAX 请求 function request str
  • 在 C# 中调用 Pocketsphinx AccesViolationException

    我正在尝试做口袋狮身人面像tutorial http cmusphinx sourceforge net wiki tutorialpocketsphinx在 C 中使用 pinvoke 但当我尝试使用 ps decode raw 进行解码
  • 如何更改所有列表项的属性值?

    我有一个简单的结构 例如 HTML ul li li ul 我想更改列表元素的每个 数据位置 属性 我的第一次Jquery镜头是在这里 costsDropdown ul each function li attr data position
  • C# 中的数字签名,无需使用 BouncyCastle

    不使用第 3 方 BouncyCastle 库 有没有办法读取自定义私钥并签署消息 sha256哈希 使用私钥加密 从技术上来说 是的 根据您拥有的密钥类型 答案会变得更加棘手 编辑 2019 年 10 月 NET Core 3 0 以 D
  • 验证 Base64 编码图像

    我正在构建一个应用程序 允许用户POSTHTML5 画布数据随后以 Base64 进行编码并显示给所有用户 我正在考虑将数据解析为实际的 png 文件并存储在服务器上 但 base64 路由允许我将图像存储在数据库中并最大限度地减少请求 图
  • SQL Server:根据条件查找日期与当前日期最接近的记录

    我正在使用 SQL Server 2012 并尝试创建一个将根据以下条件返回记录的视图 查询需要根据日期检索最适用的记录 对于内部日期范围内的日期 将返回最接近 CurrentDate 的记录 对于内部日期范围之外的日期 将返回最接近 Cu
  • 为什么在 shellcode 中使用 Push/Pop 而不是 Mov 将数字放入寄存器中?

    我有一些来自 shell 代码有效负载的示例代码 显示了 for 循环并使用 push pop 来设置计数器 push 9 pop ecx 为什么不能直接使用mov呢 mov ecx 9 是的 通常你应该总是使用mov ecx 9出于性能原
  • LinkedAuthorizationFailed 在 PowerShell 中意味着什么?

    我正在尝试使用 PowerShell 在 cosmos db 中添加虚拟网络规则 VNETS 存在于不同的租户中 我对存储帐户做了同样的事情 效果很好 我收到以下错误 有人可以给我一些关于我哪里出错的指示吗 是否可以在 Cosmos 数据库
  • eclipse:调试以编程方式启动的进程

    我正在通过 Eclipse 中的另一个 java 进程以编程方式执行 java 进程 Process process Runtime getRuntime exec command envp dir 有没有办法告诉eclipse调试子进程
  • E2009 不兼容的类型:“参数列表不同”

    我收到以下错误 E2009 不兼容的类型 参数列表不同 然而我不同意 看看定义我看不出有什么区别 这是记录定义 type TFastDiv record private DivideFunction function const Buffe
  • 哪种 TypeScript 配置会产生最接近 Node.js 16 功能的输出?

    Node js 16 最近发布 带来了对 ES2021 的更新支持以及对 ES 模块的稳定支持 如何配置 TypeScript 来输出利用所有这些新功能的 JavaScript 代码 从 Node js 开始16 0 0 100 支持ES2
  • 顺利改变CSS

    我的情况如下 我有以下功能 var showHideMemberContent function if isHidden false showHideMemberContent text Member Content main css he
  • 对 Volatile.Read/Write 的理解

    我试图理解 C Volatile 类 正如我读到的 The Volatile Write方法强制写入位置中的值 到呼叫点 此外 任何较早的程序订单 加载和存储必须在调用 Volatile Write 之前发生 The Volatile Re
  • 扩展类型转换器

    DateTimeConverter 类提供 DateTime 和字符串之间的转换 我还想支持 DateTime 和 double 之间的转换 根据 MSDN 我可以扩展 DateTimeConverter 类来执行此操作 请参阅MSDN 日