web-dev-qa-db-ja.com

ORMでDTOクラスを使用する場合のC#8のnull可能な参照型

以下に示すように、データ転送オブジェクト(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クラスでこのようなエラーを処理する方法は?

9
M.Hassan

いくつかのシナリオで役立つかもしれない別のこと:

[SuppressMessage("Compiler", "CS8618")]

メンバーまたはタイプ全体の上に使用できます。


さらに考慮すべきもう1つのことは、ファイル全体にNULL可能参照を無効にするために、ファイルの先頭に#nullable disableを追加することです。

0
Shimmy