public class OperationResult<T> {
private readonly ConcurrentDictionary<string, T> _values =
new ConcurrentDictionary<string, T>();
public OperationResult() { }
public OperationResult(bool success) : this(success, String.Empty) { }
public OperationResult(string message) : this(false, message) { }
public OperationResult(bool success, string message) : this() {
Success = success;
Message = message;
}
public int Count {
get { return _values.Count; }
}
public T this[string key] {
get { return _values[key]; }
set { _values[key] = value; }
}
public string Message { get; set; }
public bool Success { get; set; }
public override string ToString() {
return String.Format("{0}:{1}{2}", Success ? "PASS" : "FAIL", Message,
Count == 0 ? String.Empty :
String.Format("({0})", String.Join(";", _values.OrderBy(o => o.Key)
.Select(s => String.Format("{0}:\"{1}\"", s.Key, s.Value)))));
}
}