問題タブ [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 All Rules' ルール セットでは、コード分析は次のコードに対して CA1305 警告を出します。

ただし、次のコードに対して CA1305 警告は表示されません。

入力文字列が信頼できない場合、TryParse メソッドは解析を行う正しい方法であるため、これは非常に残念なことでした。

TryParse メソッドの CA1305 ルールがコード分析ツールの新しいバージョンまたはサード パーティによって実装されているかどうかは誰にもわかりませんか?

0 投票する
1 に答える
1944 参照

c# - カスタム型への WPF バインディングで IFormatProvider を使用できますか?

カスタムタイプ ( SINumber、適切な単位とプレフィックスを持つ SI 番号を表す) があります。SINumberfine と overrideにバインドできますSINumber.ToString()が、表示されるのは SINumber.ToString() を呼び出した結果です。

たとえば、SIMeasurement はSINumber、SI 値が 3099999.9046325684 Ω のタイプです。次のバインディングを使用すると、3.09999990463257 MΩ の出力が得られます。

単位 (Ω) と接頭辞 (M = メガ) の会話は正しいですが、問題は表示される数字の数にあります。IFormatProvider ICustomFormatterカスタム フォーマッタ (実装?) を使用して Binding を解釈しStringFormat、SI ロジック (プレフィックスを変更) を組み込んで3.10 MΩを表示できるようにしたいと考えています。以下は、私が使用したい Binding の例です。精度はカスタマイズ可能 (この場合は 0.00) で、単位の位置は「U」によって決定されます。

何かご意見は?SINumber.ToString()必要な精度はアプリケーション内の場所によって異なるため、ハードコードされた を使用したくありません。

前もって感謝します。

0 投票する
2 に答える
1166 参照

date - 日付を特定の形式の文字列に変換する場合、IFormatProvider を提供する必要がありますか?

私がこれを使用している場合:

FXCop は、私が CA1305 に違反していると不平を言い、IFormatProvider を提供する必要があると言います。する必要がありますか?とにかく、特定の形式で日付を求めています(これは、XMLに入れることが期待される形式です)。

フォーマットプロバイダーを提供することで何か違いはありますか? この場合、実際に間違った結果が生じる可能性はありますか?

0 投票する
2 に答える
9484 参照

c# - StringBuilderはフォーマットせずにバイトを追加します

上記のコードは、現在の日時を取得し、それをlong値にフォーマットし、それをパック10進フォーマットに変換するメソッドに渡します。コードをステップ実行すると、バイト配列には、期待しているすべてのバイトに対して正しい16進値が含まれるため、上記が機能することはわかっています。

ただし、上記は私が問題を抱えているコードです。具体的には、文字列ビルダー.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 投票する
3 に答える
303 参照

c# - カスタム String.Format の現在のインデックス

私は、通常のように機能する SQLFormat 関数に取り組んでいますString.Format

そして今、私は現在のインデックスに依存することに固執していFormatます.

たとえば、次の SQL クエリがあります (疑似、実際の使用法ではありません)。

これは現在、次のようにフォーマットされています。

出力する場所で@p2、再利用したい@p0(すでにそのパラメーターを追加しているため)

これがフォーマットを行う私のクラスです。現在、インデックス作成に static int を使用しています

現在のパラメーター インデックスを取得できるかどうかはわかりません)。

1 つの方法は、フォーマットをスキップすることですが、これが必要なので、自分でトークンを置き換えることをスキップできます。(私String.Formatが生成できるコードよりも速いと思います:P)

UPDATED : 現在のコードでコードを更新しました。事前にすべてのトークンを準備し、パラメーター名を値ではなく値としてプッシュします。

使用例:

これは戻りますSELECT @p0 /* userID */, @p1 /* userID */

それ以外の

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

現在のインデックスを取得する方法はありますか? 0この場合。