編集:明確にするために、この質問は、値オブジェクトと呼ばれる概念を持つDDDに関連しています。これらは値型ではなく、コンテンツがIDを構成するようにオブジェクトを構築する方法です。私は理解しようとしていました。これらの概念をどこまで適用する必要があるか(コメントから、ドメイン外に浸透してはならないようです)。この質問は、DDDに精通していない人には奇妙に見えるかもしれませんが、明確にするために、値型を作成するのではなく、オブジェクトを作成するための非常に特殊なメカニズムに関するものです。
2つの値オブジェクトを持つ次のサンプルコードについて考えてみます。
public class SqlServerConnectionSettings
{
public string DatabaseName { get; set; }
public string ServerName { get; set; }
public SqlServerCredentials Credentials { get; private set; }
public SqlServerConnectionSettings(SqlServerCredentials credentials)
{
Credentials = credentials;
}
public string AsConnectionString()
{
//Snip
}
}
public class SqlServerCredentials
{
public string Username { get; private set; }
public string Password { get; private set; }
public bool UseIntegratedSecurity { get; private set; }
public SqlServerCredentials(string username = "", string password = "", bool useIntegratedSecurity = true)
{
Username = username;
Password = password;
UseIntegratedSecurity = useIntegratedSecurity;
}
public string AsConnectionStringCredentials()
{
//Snip
}
}
Username、Password、UseIntegratedSecurityに個別のパラメーターを設定するのではなく、それらを保持するための値オブジェクトを作成しました。私の質問は、これは概念を行き過ぎているのでしょうか、オブジェクトが設計されているポイント値を誤解していませんか?