コード例 #1
0
        /// <summary>
        /// Создает хранящую фабрику из значения value.
        /// Смотри описание StoreFactoryMode
        /// Параметр mode фиктивный только ради перегрузки по типу, обрабатывая только StoreFactoryMode.StoringValueAndMakerWillDisposingValue
        /// </summary>
        public static IStoreFactory <T> Make <T>(T value, StoreFactoryMode mode = StoreFactoryMode.StoringValueAndMakerWillDisposingValue) where T : class, IDisposable
        {
            switch (mode)
            {
            case StoreFactoryMode.StoringValueAndMakerWillDisposingValue:
                return(new Impl.Stored <T>(value));

            case StoreFactoryMode.MakingNewValue:
                throw new ArgumentException($"Logic error. Not allowed {nameof(mode)}=${mode}. Value already created. Can't making new from already created.");
            }
            throw new NotImplementedException($"Not implemented {nameof(mode)}=${mode}.");
        }
コード例 #2
0
        /// <summary>
        /// Создает хранящую фабрику из функтора valueFactory.
        /// Смотри описание StoreFactoryMode
        /// </summary>
        public static IStoreFactory <T> Make <T>(Func <T> valueFactory, StoreFactoryMode mode = StoreFactoryMode.MakingNewValue) where T : class, IDisposable
        {
            switch (mode)
            {
            case StoreFactoryMode.StoringValueAndMakerWillDisposingValue:
                return(new Impl.Stored <T>(valueFactory is null ? throw new ArgumentNullException($"Not supported null {nameof(valueFactory)}") : valueFactory()));

            case StoreFactoryMode.MakingNewValue:
                return(new Impl.Factory <T>(valueFactory));
            }
            throw new NotImplementedException($"Not implemented {nameof(mode)}=${mode}.");
        }
コード例 #3
0
        /// <summary>
        /// Конвертер StoreFactoryMode в DisposableStoreFactoryMode, тк смысл один и тоже, но
        /// </summary>
        public static DisposableStoreFactoryMode ToDisposableStoreFactoryMode(this StoreFactoryMode mode)
        {
            switch (mode)
            {
            case StoreFactoryMode.MakingNewValue:
                return(DisposableStoreFactoryMode.MakingNewValue);

            case StoreFactoryMode.StoringValueAndMakerWillDisposingValue:
                return(DisposableStoreFactoryMode.StoringValueAndMakerWillDisposingValue);
            }
            throw new NotImplementedException($"Not implemented {nameof(mode)}=${mode}.");
        }