問題タブ [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.
code-analysis - Visual Studio 2010 コード分析 CA1305 (IFormatProvider を指定) ルールが TryParse メソッドに対して機能しない
コード分析ルールCA1305 - IFormatProvider の指定が TryParse メソッドに対して機能しないのはなぜですか?
たとえば、'Microsoft All Rules' ルール セットでは、コード分析は次のコードに対して CA1305 警告を出します。
ただし、次のコードに対して CA1305 警告は表示されません。
入力文字列が信頼できない場合、TryParse メソッドは解析を行う正しい方法であるため、これは非常に残念なことでした。
TryParse メソッドの CA1305 ルールがコード分析ツールの新しいバージョンまたはサード パーティによって実装されているかどうかは誰にもわかりませんか?
c# - カスタム型への WPF バインディングで IFormatProvider を使用できますか?
カスタムタイプ ( SINumber
、適切な単位とプレフィックスを持つ SI 番号を表す) があります。SINumber
fine と 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()
必要な精度はアプリケーション内の場所によって異なるため、ハードコードされた を使用したくありません。
前もって感謝します。
date - 日付を特定の形式の文字列に変換する場合、IFormatProvider を提供する必要がありますか?
私がこれを使用している場合:
FXCop は、私が CA1305 に違反していると不平を言い、IFormatProvider を提供する必要があると言います。する必要がありますか?とにかく、特定の形式で日付を求めています(これは、XMLに入れることが期待される形式です)。
フォーマットプロバイダーを提供することで何か違いはありますか? この場合、実際に間違った結果が生じる可能性はありますか?
c# - StringBuilderはフォーマットせずにバイトを追加します
上記のコードは、現在の日時を取得し、それをlong値にフォーマットし、それをパック10進フォーマットに変換するメソッドに渡します。コードをステップ実行すると、バイト配列には、期待しているすべてのバイトに対して正しい16進値が含まれるため、上記が機能することはわかっています。
ただし、上記は私が問題を抱えているコードです。具体的には、文字列ビルダー.Append(byte)
が実際ToString()
にそのバイトに対してを実行することを調査して見つけました。これは、バイトを文字列に追加するときにバイトの値を変更します。問題はStringBuilder
、「バイト」をそのまま取得し、値をフォーマット/変更せずにメモリに保存するように指示する方法です。.AppendFormat()
を使用してフォーマット方法に関する多くのオプションを提供するいくつかのオーバーロードがあることも知っていIFormatProvider
ますが、データの値をフォーマット/変更/変更しないように指示する方法がわかりません。
c# - DateTime.ParseExact(String, String, IFormatProvider) に IFormatProvider が必要なのはなぜですか?
指定された形式を使用して正確な日時を解析するParseExact
メソッドを使用している場合、なぜ IFormatProvider オブジェクトを提供する必要があるのでしょうか? その背後にあるポイントは何ですか?
例えば:
なぜprovider
ここが必要なのですか?
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
しかし、これはひどい設計のように見えます (インターフェースを取り、それを強く結合します)。
特別なユースケースがありませんか?
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
この場合。