API内の一連の文字列をクラスに変換しています。コアAPIの一部のタイプを置き換えて、タイプエラーを追跡できるため、コンパイラを広範囲に使用してこれを支援しています。
ただし、このアプローチにはイライラするバグの原因があります。
// linqpad snippet
void Main()
{
var t = "yay : " + (new Foo());
t.Dump(); // "yay: namespace.Foo" instead of compilation error
}
class Foo {
}
C#は、文字列とユーザー定義オブジェクトを喜んで追加します。これを警告またはコンパイルエラーに変える方法はありますか?
このデータは最終的にユーザーに表示されるため、コンパイルエラーが必要です。1つの連結を見逃すと、ユーザーにはアプリケーションにクラス名が表示されますが、これは私が望んでいる動作ではありません。
C#は、文字列とユーザー定義オブジェクトを喜んで追加します。これを警告またはコンパイルエラーに変える方法はありますか?
はい-VisualStudio2015以降を使用している場合:)
あなたは使用することができますロスリンを独自のコード診断/コード修正を作成するには、と私は信じている、これはあなたがエラーであることに単なる警告であることから、問題をエスカレートすることができます。その後、この診断を継続的インテグレーションビルドに含めることができます。
ただし、これをどこまで進めるかに注意してください。私は通常、これを完全なエラーにするのではなく、コードレビューで処理しようとします。C#の独自の方言を作成することは、滑りやすい坂道になる可能性があります。
場合によっては、指定したコードが完全に適切である可能性があることに注意してください。たとえば、Foo
オーバーライドToString()
する場合などです。あなたが実際にあることを確認しますが、これを禁止したいですか?
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加