nameof
の補完候補をメソッドのパラメーターに追加したいと思います。Resharperでパラメーターの補完候補を 'nameof'に追加
方法:
public static class Ensure
{
/// <summary>
/// throws <see cref="ArgumentException"/> exception if string is null or empty.
/// </summary>
/// <param name="value">string to check its content.</param>
/// <param name="name">name of parameter passed.</param>
public static void StringNotNullOrEmpty(string value, string name)
{
if (string.IsNullOrEmpty(value))
{
throw new ArgumentException("Value cannot be null or empty", name);
}
}
}
私は<...>
ためnameof(testString)
提案を取得したいと思いEnsure.StringNotNullOrEmpty(testString, <...>)
を入力します。上記の方法は、nameof
を示唆していません(さらに悪いことに、 'n'をタイプした後には、null
、new
というような提案しか得られません)。 nameof(...)
が必要なので、に正しいParamName
が表示されます。 ReSharperののサイトで
それはArgumentNullException
がInvokerParameterNameAttribute
(ソース:Resharper InvokerParameterNameAttribute)を使用してnameof
の提案を使用することを言います。
試み: だから私は私のプロジェクトでnugetパッケージインストール:JetBrains.Annotations 10.4.0をし、以下のようにメソッドを変更:私は「とき
public static class Ensure
{
/// <summary>
/// throws <see cref="ArgumentException"/> exception if string is null or empty.
/// </summary>
/// <param name="value">string to check its content.</param>
/// <param name="name">name of parameter passed.</param>
public static void StringNotNullOrEmpty([CanBeNull] string value,
[NotNull] [InvokerParameterName] string name)
{
if (string.IsNullOrEmpty(value))
{
throw new ArgumentException("Value cannot be null or empty", name);
}
}
}
は、残念ながら、上記の試みは、まだ私にnameof
の提案を与えていませんタイプ:Ensure.StringIsNotNullOrEmpty(testString,
。
CallerMemberNameAttribute
はMSDNです。しかし、これは呼び出すメソッドの名前をstring
として与えるだけです。
私はGitHubのいくつかのリポジトリも調べましたが、私の試みと同じ方法でしか解決策を見つけることができませんでした。
私が考えることができる理由の1つは、後者にInvokerParameterNameAttribute
が定義されたメソッドに2つのstring
パラメータがある場合です。これはResharperにとって混乱を招く可能性があります。
nameof
メソッドのパラメータの提案を追加することはできますか?そして、私は上記の方法でこれをどのように達成できますか?
追加情報: 私はVS2015 + Resharper 2016.3.2を持っています。
ReSharperのは確か 'nameof'を示唆しておき、将来の読者のために役立つことができ、あなたのコードをコメントすることができますが、私は見たい' nameof'私はそれを入力している間の提案。 '新しいArgumentNullExceptionをスローするとき(' nameof(value) 'を直接示唆しています)、私のメソッドでも可能ですか?このメソッドのドキュメントに関しては、これを投稿から除外しました。 – Goat
@FirstOrGoat私が知る限り、あなたが望む動作を達成することはできません。この動作に関するフィードバックを提出し、提出したり、解決策を提供したりすることができます –
ありがとう!私はResharperに関するこの提案を行い、フィードバックを受け取ったら投稿してください。 – Goat