Эта обертка используется в моей производственной системе.Когда вы всегда должны вызывать GetBsonValue (), и он сделает всю остальную работу за вас
/// <summary>
/// Makes a Bson object for current value object
/// </summary>
/// <returns>The Bson object for current value object</returns>
private BsonValue GetBsonValue()
{
if (!_value.Contains(_wildCard))
return _value;
string pattern = ApplyWildCard();
return BsonRegularExpression.Create(new Regex(pattern, RegexOptions.IgnoreCase));
}
/// <summary>
/// Finds wildcard characters and substitutes them in the value string
/// </summary>
/// <returns></returns>
private string ApplyWildCard()
{
return string.Format("^{0}$", _value.Replace(_wildCard, ".*"));
}
Снаружи вы вызываете следующий метод, так что нет никакой возможности забыть:
public QueryComplete BuildQuery()
{
return Query.EQ(_key, GetBsonValue());
}