C Sharp - The Result Class 6/29/2011 All C Sharp posts

Many-o-time I've been in a situation where I need to return more data from any given method and sometimes bool just doesn't cut it. This isn't anything new but this might get you thinking about what would be useful as a return type for any given method

    public class Result<T> where T : class
    {
        public bool Equals(bool value)
        {
            if (value == null) return false;
            return Value.Equals(value);
        }

        public bool Value { get; set; }
        public List<string> Messages { get; set; }
        public T Entity { get; set; }

        public Result() : this(false, new List<string>(), default(T)) { }
        public Result(bool value) : this(value, new List<string>(), default(T)) { }
        public Result(bool value, IEnumerable<string> messages) : this(value, messages, default(T)) { }
        public Result(bool value, IEnumerable<string> messages, T entity)
        {
            Value = value;
            Messages = new List<string>(messages);
            Entity = entity;
        }
    }

Usage:

    public Result<User> CreateUser(string firstName, string lastName, ...)
    {
        Result<> result = new Result<User>();

        result.Entity = Dao....

        result.Value = result.Entity.UserId > 0;

        if (!result.Value)
        {
            result.Messages.Add("User was not created successfully");
        }

        return result;
    }