私は別のオブジェクトのメソッドにパラメータを通じて周りの異なる接続文字列を渡しています:文字列パラメータをスーパータイプに昇格する必要がありますか?
public ConnectOrDie(string connectionString)
{
if (string.IsNullOrEmpty(connectionString))
{
this._logger.ConfigurationNotFound();
throw new ConfigurationErrorsException("Configuration string is not found.");
}
}
string.IsNullOrEmpty
にメソッドが呼び出されるたびにチェックする必要がDRY元本をサポートしていないために、それは次のようになりそのためのタイプを作成し、集中化された場所でその妥当性をチェックするための良いプラクティスと考えられていますか?
public class ConnectionString
{
private string _value;
public ConnectionString(string value)
{
if(string.IsNullOrEmpty(value) throw;
_value = value;
}
}
、私は 'セマンティックTypes'、ある唯一の問題に非常に有利ですC#では構造体用のボイラープレートコードをたくさん書かなければなりませんでした(これは一般的に 'Semantic Types'に最適です)。 –
"構造体用のボイラープレートコード" ---どうか説明できますか? –
'Equals'、' GetHashCode'をオーバーライドします。 'IEquatable'などを実装します。この場合は' class'でも[Structural Typing](https://en.wikipedia.org/wiki/Structural_type_system)が必要です。 –