我通过参数将不同的连接字符串传递给不同对象的方法:
public ConnectOrDie(string connectionString)
{
if (string.IsNullOrEmpty(connectionString))
{
this._logger.ConfigurationNotFound();
throw new ConfigurationErrorsException("Configuration string is not found.");
}
}
为了支持DRY主体而不必在每次调用方法时检查string.IsNullOrEmpty
,为它创建一个类型会被认为是一种好习惯,并在集中位置检查其有效性?
public class ConnectionString
{
private string _value;
public ConnectionString(string value)
{
if(string.IsNullOrEmpty(value) throw;
_value = value;
}
}
答案 0 :(得分:0)
这样的事情:
struct ConnectionString : IEquatable<ConnectionString>
{
readonly string _value;
public string Value { get { return _value; } }
public ConnectionString(string value)
{
if (string.IsNullOrEmpty(value))
{
throw new ArgumentNullException(value);
}
_value = value;
}
public override bool Equals(object obj)
{
return base.Equals(obj is ConnectionString && Equals((ConnectionString)obj));
}
public bool Equals(ConnectionString other)
{
return this == other;
}
public static bool operator ==(ConnectionString left, ConnectionString right)
{
return left._value == right._value;
}
public static bool operator !=(ConnectionString left, ConnectionString right)
{
return left._value != right._value;
}
public override int GetHashCode()
{
return _value.GetHashCode();
}
public override string ToString()
{
return _value;
}
public static implicit operator ConnectionString(string value)
{
return new ConnectionString(value);
}
public static explicit operator string(ConnectionString value)
{
return value._value;
}
}
您可以这样调用您的方法:ConnectOrDie("conn");