0

例:「タイトル」と呼ばれる1つのプロパティ(プロパティグリッドから編集可能なプロパティ)を持つユーザーコントロールがあります。プロパティ「Title」が空の場合にコンパイル時例外をスローする方法はありますか?または、すべての設計時のプロパティはオプションですか?

4

1 に答える 1

3

コンパイル時に特定のプロパティが設定されていることを確認する方法はありません。#errorディレクティブを使用してコンパイル時エラーを発生させたり、コードがコンパイルされている場合にコンパイル時警告を出す #warningを使用したりすることができますが、これは望ましくありません。

特定のプロパティまたはメソッドが設定されていることを確認するには、2 つの方法があります。1 つ目は、コンストラクターでそれを要求するか、後続のメソッドまたはプロパティで設定されていることを確認することです。これはコンパイル時ではなく実行時チェックであり、あなたが言うように、UserControlには特定の制限があります。

2 つ目の方法は、 FXCopなどのコード分析ツールを使用することです。UserControl のすべてのインスタンスを識別し、プロパティがすべてのインスタンスに設定されていることを確認するカスタム ルールを作成できます。Roslynや PostSharpでも可能かもしれませんが、私はこれらのツールに十分に精通しているとは言えません。

FXCop のようなコード分析ツールの問題は、学習曲線が急勾配であることです。プログラミング言語は複雑であり、これらのツールはその複雑さを明らかにする必要があります。私の推奨事項は、「ここにタイトルを挿入」のようなデフォルト値を使用することです。または、適切なデフォルトがない場合でも、コントロールが説明メッセージでレンダリングされたときに例外をスローすることをお勧めします。

UserControl のプロパティが確実に設定されるようにする良い方法を参照してください。同様の場合。

于 2013-01-02T12:31:23.543 に答える