コード例 #1
0
        public void TryFindSetting_CanFindSettingByName()
        {
            var provider1 = Mock.Create <ISettingProvider>();
            var provider2 = Mock.Create <ISettingProvider>();
            var provider3 = Mock.Create <ISettingProvider>();

            provider1
            .Arrange(x => x.Read(Arg.IsAny <SelectQuery>()))
            .Returns(default(ISetting));

            provider2
            .Arrange(x => x.Read(Arg.Matches <SelectQuery>(arg => arg.SettingName == SettingName.Parse("Type.Member"))))
            .Returns(Setting.Create("Type.Member", "abc"));

            provider3
            .Arrange(x => x.Read(Arg.IsAny <SelectQuery>()))
            .Returns(default(ISetting));

            var settingFound = FirstSettingFinder.TryFindSetting
                               (
                new SelectQuery(SettingName.Parse("Type.Member"), typeof(string)),
                new[] { provider1, provider2, provider3 },
                out var result
                               );

            Assert.IsTrue(settingFound);
            Assert.AreSame(provider2, result.SettingProvider);
            Assert.AreEqual("abc", result.Setting.Value);
        }
コード例 #2
0
ファイル: Configuration.cs プロジェクト: wkfff/reusable
        public object GetValue(SelectQuery query)
        {
            if (query == null)
            {
                throw new ArgumentNullException(nameof(query));
            }

            query.ProviderName = _settingProviderNames.TryGetValue(query.SettingName, out var providerName) ? providerName : query.ProviderName;

            try
            {
                if (_settingFinder.TryFindSetting(query, _providers, out var result))
                {
                    CacheProvider(query.SettingName, result.SettingProvider.Name);
                    return(result.Setting.Value);
                }
            }
            catch (Exception ex)
            {
                throw ($"{nameof(GetValue)}", $"Could not get value for {query.SettingName.ToString().QuoteWith("'")}. See the inner exception for details.", ex).ToDynamicException();
            }

            throw ("SettingNotFound", $"Setting {query.SettingName.ToString().QuoteWith("'")} not found.").ToDynamicException();
        }