以下に示すように、データ転送オブジェクト(DTO)クラスを持つプロジェクトでこの機能をアクティブにしました。
public class Connection
{
public string ServiceUrl { get; set; }
public string? UserName { get; set; }
public string? Password { get; set; }
//... others
}
しかし、私はエラーが出ます:
CS8618
:nullにできないプロパティ「ServiceUrl」は初期化されていません。プロパティをnull可能として宣言することを検討してください。
これはDTOクラスなので、プロパティを初期化していません。これは、プロパティがnullでないことを保証するためにクラスを初期化するコードの責任です。
たとえば、呼び出し元は次のことができます。
var connection = new Connection
{
ServiceUrl=some_value,
//...
}
私の質問:C#8のnull可能性コンテキストが有効になっているときに、DTOクラスでこのようなエラーを処理する方法は?
いくつかのシナリオで役立つかもしれない別のこと:
[SuppressMessage("Compiler", "CS8618")]
メンバーまたはタイプ全体の上に使用できます。
さらに考慮すべきもう1つのことは、ファイル全体にNULL可能参照を無効にするために、ファイルの先頭に#nullable disable
を追加することです。