/// <summary>
        /// Creates a new stateful service.
        /// </summary>
        /// <param name="serviceContext">
        /// A <see cref="StatefulServiceContext"/> describes the service context, which it provides information like replica ID, partition ID, and service name.
        /// </param>
        /// <param name="stateProviderReplica">
        /// A <see cref="IStateProviderReplica2"/> represents a reliable state provider replica.
        /// </param>
        /// <exception cref="ArgumentNullException"></exception>
        protected StatefulServiceBase(
            StatefulServiceContext serviceContext,
            IStateProviderReplica2 stateProviderReplica)
        {
            if (serviceContext == null)
            {
                throw new ArgumentNullException(nameof(serviceContext));
            }

            if (stateProviderReplica == null)
            {
                throw new ArgumentNullException(nameof(stateProviderReplica));
            }

            this.stateProviderReplica = stateProviderReplica;
            this.stateProviderReplica.OnDataLossAsync = this.OnDataLossAsync;
            this.stateProviderReplica.OnRestoreCompletedAsync = this.OnRestoreCompletedAsync;
            this.restoreContext = new RestoreContext(this.stateProviderReplica);
            this.serviceContext = serviceContext;
            this.addresses = new ReadOnlyDictionary<string, string>(new Dictionary<string, string>());
        }
 public InternalStatefulService(StatefulServiceContext serviceContext, IStateProviderReplica2 stateProviderReplica)
     : base(serviceContext, stateProviderReplica)
 {
 }
 public SealedStatefulService(StatefulServiceContext serviceContext, IStateProviderReplica2 stateProviderReplica)
     : base(serviceContext, stateProviderReplica)
 {
 }