问题标签 [iformatprovider]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1126 浏览

code-analysis - Visual Studio 2010 代码分析 CA1305(指定 IFormatProvider)规则不适用于 TryParse 方法

我想知道为什么代码分析规则CA1305 - 指定 IFormatProvider不适用于 TryParse 方法?

例如,使用“Microsoft 所有规则”规则集,代码分析会针对以下代码发出 CA1305 警告:

但不针对以下代码给出 CA1305 警告:

我发现这很不幸,因为如果输入字符串不可靠,TryParse 方法是进行解析的正确方法。

有谁知道 TryParse 方法的 CA1305 规则是在某些较新版本的代码分析工具中还是由某个第 3 方实现的?

0 投票
1 回答
1944 浏览

c# - 我可以将 IFormatProvider 与 WPF 绑定一起使用到自定义类型吗?

我有一个自定义类型(SINumber,它表示具有适当单位和前缀的 SI 编号)。我可以绑定到SINumber罚款和覆盖SINumber.ToString(),但显示的是调用 SINumber.ToString() 的结果。

例如,SIMeasurement 是SINumberSI 值为 3099999.9046325684 Ω 的类型。使用以下绑定,我得到 3.09999990463257 MΩ 的输出。

单位 (Ω) 和前缀 (M = mega) 对话是正确的,问题在于显示的数字数量。我希望能够使用自定义格式化程序(实现IFormatProvider ICustomFormatter?)来解释StringFormatBinding,并合并我的 SI 逻辑(更改前缀)以显示3.10 MΩ。下面是我想使用的绑定示例,其中精度是可定制的(在本例中为 0.00),并且单位的位置由“U”确定。

有什么想法吗?我不想使用硬编码SINumber.ToString(),因为所需的精度会在应用程序中的不同位置有所不同。

提前致谢。

0 投票
2 回答
1166 浏览

date - 将日期转换为具有特定格式的字符串时,是否需要提供 IFormatProvider?

如果我使用这个:

FXCop 抱怨我违反了 CA1305 并说我应该提供一个 IFormatProvider。我需要吗?无论如何,我要求以特定格式提供日期(这是我希望将其放入 XML 的格式)。

提供格式提供程序会有什么不同吗?在这种情况下,它实际上会产生错误的结果吗?

0 投票
3 回答
972 浏览

c# - ToString(IFormatProvider) 的奇数十进制类型行为

在控制台中:10.00 10 真

为什么不一样?更重要的是,无论变量如何初始化,如何调用 ToString() 以确保相同的输出?

0 投票
2 回答
9484 浏览

c# - StringBuilder 附加字节而不格式化

上面的代码获取当前日期时间,将其格式化为长值并将其传递给将其转换为压缩十进制格式的方法。我知道上述方法有效,因为当我单步执行代码时,字节数组对于我期望的所有字节都具有正确的十六进制值。

然而,上面是我遇到问题的代码,特别是我研究过并发现字符串生成器.Append(byte)实际上ToString()为那个字节做了一个。当它将字节添加到字符串时,它会改变字节的值。问题是我如何告诉StringBuilder它按原样获取“字节”并将其存储在内存中而不格式化/更改值。我知道还有一个.AppendFormat()有几个重载,它们使用IFormatProvider来提供很多关于如何格式化事物的选项,但我没有看到任何方法告诉它不要格式化/更改/更改数据的值。

0 投票
1 回答
66640 浏览

c# - 为什么 DateTime.ParseExact(String, String, IFormatProvider) 需要 IFormatProvider?

如果我们使用指定格式的精确ParseExact日期时间解析方法,为什么我们需要提供一个 IFormatProvider 对象?它背后的意义何在?

例如:

为什么我们需要provider这里?

0 投票
1 回答
427 浏览

c# - ICustomFormatter 中的 IFormatProvider

我们希望像往常一样实现自定义格式化程序,最好使用 Microsoft 的接口,所以我找到了 ICustomFormatter。

http://msdn.microsoft.com/en-us/library/system.icustomformatter.format(v=vs.110).aspx

然而,接口的签名提供了这个:

我什至会使用 formatProvider 做什么?我还没有看到很好的例子说明你为什么担心什么 formatProvider 已经加载了这个 ICustomFormatter。

我发现的唯一例子是这样的:

http://www.codeproject.com/Articles/6533/Custom-String-Formatting-in-NET

但这看起来就像糟糕的设计(采用一个接口,然后强耦合它)。

我错过了一些特殊的用例吗?

0 投票
2 回答
4109 浏览

c# - 如何在 DateTime.ParseExact 中使用 IFormatProvider

如果已经有格式参数,为什么还要使用IFormatProviderin呢?DateTime.ParseExact

0 投票
3 回答
303 浏览

c# - 自定义 String.Format 中的当前索引

我正在研究一个 SQLFormat 函数,它像正常的String.Format.

现在我坚持依赖当前Format所在的索引。

例如,我们有这个 SQL 查询(伪,不是实际用法)。

现在的格式是这样的:

它输出的地方@p2,我希望它重用@p0(因为我已经添加了那个参数)

这是我的格式化课程。目前我正在使用静态 int 进行索引

我还没有发现我是否可以获得当前的参数索引)。

一种方法是跳过格式化,但我需要这个,所以我可以跳过自己替换标记。(我认为这String.Format比我可以生成的代码要快:P)

更新:我已经用我当前的代码更新了代码,我预先准备了所有的标记,并将参数名称作为值而不是值推送。

示例用法:

这返回SELECT @p0 /* userID */, @p1 /* userID */

代替

SELECT @p0 /* userID */, @p0 /* userID */

有什么方法可以获取当前索引吗?0在这种情况下。

0 投票
1 回答
10828 浏览

c# - Convert.ToString(Decimal, IFormatProvider) 或 String.Format

我已经看到了问题Odd decimal type behavior for ToString(IFormatProvider)

这是我的测试代码

样本结果如下:

为什么 Convert.ToString 不应用该格式?

在此处输入图像描述

这是 Win7 Prof/VS2010+SP1Rel (10.0.40219.1)