public BlobLease(
            Fifthweek.Shared.ITimestampCreator timestampCreator,
            Fifthweek.Azure.IBlobLeaseHelper blobLeaseHelper,
            System.Threading.CancellationToken cancellationToken,
            System.String leaseObjectName)
        {
            if (timestampCreator == null)
            {
                throw new ArgumentNullException("timestampCreator");
            }

            if (blobLeaseHelper == null)
            {
                throw new ArgumentNullException("blobLeaseHelper");
            }

            if (cancellationToken == null)
            {
                throw new ArgumentNullException("cancellationToken");
            }

            if (leaseObjectName == null)
            {
                throw new ArgumentNullException("leaseObjectName");
            }

            this.timestampCreator  = timestampCreator;
            this.blobLeaseHelper   = blobLeaseHelper;
            this.cancellationToken = cancellationToken;
            this.leaseObjectName   = leaseObjectName;
        }
        public UserStateController(
            Fifthweek.Api.Core.IQueryHandler <Fifthweek.Api.Aggregations.Queries.GetUserStateQuery, Fifthweek.Api.Aggregations.Queries.UserState> getUserState,
            Fifthweek.Shared.ITimestampCreator timestampCreator,
            Fifthweek.Api.Identity.Shared.Membership.IRequesterContext requesterContext)
        {
            if (getUserState == null)
            {
                throw new ArgumentNullException("getUserState");
            }

            if (timestampCreator == null)
            {
                throw new ArgumentNullException("timestampCreator");
            }

            if (requesterContext == null)
            {
                throw new ArgumentNullException("requesterContext");
            }

            this.getUserState     = getUserState;
            this.timestampCreator = timestampCreator;
            this.requesterContext = requesterContext;
        }