public MetricReliableDictionary(
     IReliableDictionary <BinaryValue, BinaryValue> store, BinaryValueConverter converter, MetricConfiguration config)
 {
     this.store     = store;
     this.converter = converter;
     this.config    = config;
 }
        /// <summary>
        /// Creates a new instance of MetricReliableStateManager.
        /// </summary>
        /// <param name="context"></param>
        /// <param name="serializerResolver"></param>
        /// <param name="configProvider"></param>
        /// <param name="stateManager">
        /// Best to leave this null and let the constructor create one that's configured with a fast binary serializer.
        /// Beware: if you pass in your own instance of ReliableStateManager, it will use DataContract.
        /// </param>
        public MetricReliableStateManager(
            StatefulServiceContext context, IReliableStateSerializerResolver serializerResolver, MetricConfiguration config = null,
            IReliableStateManagerReplica stateManager = null)
        {
            this.serializerResolver  = serializerResolver;
            this.config              = config ?? new MetricConfigurationSettingsXml(context);
            this.stateManagerReplica =
                stateManager ??
                new ReliableStateManager(
                    context,
                    new ReliableStateManagerConfiguration(
                        onInitializeStateSerializersEvent: () =>
            {
                this.stateManagerReplica.StateManagerChanged += this.StateManagerReplica_StateManagerChanged;
                this.stateManagerReplica.TransactionChanged  += this.StateManagerReplica_TransactionChanged;

                return(Task.FromResult(this.stateManagerReplica.TryAddStateSerializer <BinaryValue>(new BinaryValueStateSerializer())));
            }));
        }
 internal static IReliableState CreateFromReliableDictionaryType(
     Type type, IReliableDictionary <BinaryValue, BinaryValue> innerStore, BinaryValueConverter converter, MetricConfiguration config)
 {
     return((IReliableState)Activator.CreateInstance(
                typeof(MetricReliableDictionary <,>).MakeGenericType(
                    type.GetGenericArguments()),
                innerStore,
                converter,
                config));
 }