Ejemplo n.º 1
0
        private static void ParsingTest(Action <ISettingParser, TestClass> action)
        {
            var instanceInstance = new TestClass();
            var instanceParser   = new SettingParser
            {
                new Setting <string>(() => instanceInstance.StringValue),
                new Setting <string>(() => instanceInstance.StringValue2),
                new Setting <int>(() => instanceInstance.IntValue),
                new Setting <bool>(() => instanceInstance.BoolValue),
                new Setting <bool>(() => instanceInstance.FlagValue)
                {
                    IsFlag = true,
                },
                new Setting <bool>(() => instanceInstance.FlagValue2)
                {
                    IsFlag = true,
                },
                new Setting <ulong>(() => instanceInstance.UlongValue),
                new Setting <DateTime>(() => instanceInstance.DateTimeValue, parser: DateTime.TryParse),
                new CollectionSetting <string>(() => instanceInstance.CollectionStrings),
            };
            var instanceSettings = ((ISettingParser)instanceParser).GetSettings();

            Assert.AreEqual(instanceParser.Count, instanceSettings.Count);
            action(instanceParser, instanceInstance);

            var staticInstance = new TestClass();
            var staticParser   = new StaticSettingParser <TestClass>
            {
                new StaticSetting <TestClass, string>(x => x.StringValue),
                new StaticSetting <TestClass, string>(x => x.StringValue2),
                new StaticSetting <TestClass, int>(x => x.IntValue),
                new StaticSetting <TestClass, bool>(x => x.BoolValue),
                new StaticSetting <TestClass, bool>(x => x.FlagValue)
                {
                    IsFlag = true,
                },
                new StaticSetting <TestClass, bool>(x => x.FlagValue2)
                {
                    IsFlag = true,
                },
                new StaticSetting <TestClass, ulong>(x => x.UlongValue),
                new StaticSetting <TestClass, DateTime>(x => x.DateTimeValue, parser: DateTime.TryParse),
                new StaticCollectionSetting <TestClass, string>(x => x.CollectionStrings),
            };
            var staticSettings = ((ISettingParser)staticParser).GetSettings();

            Assert.AreEqual(staticParser.Count, staticSettings.Count);
            action(staticParser, staticInstance);
        }
 /// <summary>
 /// Registers both the static setting parser and a try parser for it. Also freezes the parser making it unmodifiable.
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="parser"></param>
 public static void Register <T>(this StaticSettingParser <T> parser) where T : class, new()
 {
     StaticSettingParserRegistry.Instance.Register(parser);
     TryParserRegistry.Instance.Register <T>(TryParseUtils.TryParseStaticSetting);
     parser.Freeze();
 }
 /// <summary>
 /// Returns true if there are 0 needed settings.
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="parser"></param>
 /// <param name="source"></param>
 /// <returns></returns>
 public static bool AreAllSet <T>(this StaticSettingParser <T> parser, T source) where T : class
 => parser.GetNeededSettings(source).Count == 0;
 /// <summary>
 /// Registers the current try parser so it can be used upon request.
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="parser"></param>
 public void Register <T>(StaticSettingParser <T> parser) where T : class
 => _SettingParsers[typeof(T)] = parser;