The following is a Result class:

    public class Result
    {
        public Result(T data) => Successful = (true, data);

        public Result(E data) => Error      = (true, data);

        public (bool, T) Successful { get; }
        public (bool, E) Error      { get; }
    }

Here’s a Service class:

    public class Service
    {
        public Result MakeRequest(string name)
        {
            try
            {
                if (name == null) throw new Exception("Name is null");
            }
            catch (Exception e)
            {
                return new Result(new ErrorDescription(e.Message));
            }
            
            return new Result(new Dog(name));
        }
    }

Here’s some tests:

        [Test]
        public void service_is_successful()
        {
            // Setup
            var service = new Service();

            // Test
            var result = service.MakeRequest("Kujo");

            // Verify
            var ( success, _ ) = result.Successful;
            Assert.True(success);
        }

        [Test]
        public void service_thats_successful_doesnt_have_error()
        {
            // Setup
            var service = new Service();

            // Test
            var result = service.MakeRequest("Kujo");

            // Verify
            var (isError, _) = result.Error;
            Assert.False(isError);
        }

        [Test]
        public void service_fails()
        {
            // Setup
            var service = new Service();

            // Test
            var result = service.MakeRequest(null);

            // Verify
            var (isError, _) = result.Error;
            Assert.True(isError);
        }

        [Test]
        public void service_that_failed_doesnt_have_success()
        {
            // Setup
            var service = new Service();

            // Test
            var result = service.MakeRequest(null);

            // Verify
            var (isSuccess, _) = result.Successful;
            Assert.False(isSuccess);
        }