2014-01-12 12 views
6

string.Formatのfristパラメータのようなformatパラメータで書き込む方法を考えてみましょう。知っているように、Intellisenseは最初のパラメータの制約を認識し、パラメータとの一貫性をチェックします。どのように私はそのような方法を書くことができます。簡単な例としてintellisenseをサポートしたstring.Formatのようなメソッドの記述方法

、同じようstring.Formatのラップを考慮してください。

public string MyStringFomratter(string formatStr, params object[] arguments) 
{ 
    // Do some checking and apply some logic 
    return string.Format(formatStr, arguments); 
} 

どのように私はformatStrstring.Formatの最初のパラメータのようなものであることをコンパイラやIDEに言うことができますか?

だから私はこのようないくつかのコードがある場合:コンパイラは、パラメータの数が間違ってString.Formatのための警告を発行しません

var x = MyStringFormatter("FristName: {0}, LastName: {1}", firstName); 
// This code should generate a warning in the IDE 
+6

パラメータの内容を分析することはできません。しかし、Visual Studioアドイン(ReSharperなど)を使用すると、String.Formatのパラメータ数を確認できます。 –

+0

@SergeyBerezovskiy ye ResharperはString.Formatだけをチェックしますが、自分のメソッドはどうですか?方法はありますか? – mehrandvd

+0

Resharperは、すべてのメソッドについて、Reshaperのメーカが1つのメソッド名または他のメソッドに対してハードコードされているとは思わないと確信しています – MikeSW

答えて

10

Visual Studioでパラメータコンテンツを解析することはできません。コードがコンパイル可能であることを確認するだけで、すべてのプレースホルダにパラメータを指定しなくてもString.Formatはコンパイルできます。しかし、Visual Studioアドイン(ReSharperまたはCodeRush)を使用して、String.Formatの書式設定文字列のプレースホルダ数を分析し、このメソッドに渡されたパラメータ数を確認できます。

私はReSharperを使用していませんが、文字列の書式設定メソッド - Defining Custom String Formatting Methodsとしてどのメソッドにもマークを付けることができます。 StringFormatMethodAttribute属性でメソッドに注釈を付けるだけです。

[StringFormatMethod("formatStr")] 
public string MyStringFomratter(string formatStr, params object[] arguments) 
{ 
    // Do some checking and apply some logic 
    return string.Format(formatStr, arguments); 
} 
+1

これは私が探していた正確な答えです。ありがとう。 – mehrandvd

0

を。 しかし、Intellisenseのサポートが必要な場合は、メソッドの前に///を置き、メソッドを文書化するためのテンプレートを作成します。ドキュメントを記入すると、このメソッドを使用するとインテリセンスで表示されます。

+0

実際、私はResharperにメソッドのパラメータの動作を伝える方法を探しています。 – mehrandvd

+0

私はString.FormatのようなメソッドはResharperでハードコードされていると思います。ごめんなさい。 –

関連する問題