public void Converters()
        {
            var config = new JobHostConfiguration();
            var ctx    = new ExtensionConfigContext
            {
                Config = config
            };


            // Simulates extension initialization scope.
            {
                ctx.AddBindingRule <TestAttribute>().AddConverter <int, string>(val => "specific"); // specific
                ctx.AddConverter <int, string>(val => "general");                                   // general
            }
            ctx.ApplyRules();

            var cm = config.ConverterManager;

            {
                var generalConverter = cm.GetConverter <int, string, Attribute>();
                var result           = generalConverter(12, null, null);
                Assert.Equal("general", result);
            }

            {
                var specificConverter = cm.GetConverter <int, string, TestAttribute>();
                var result            = specificConverter(12, null, null);
                Assert.Equal("specific", result);
            }
        }
示例#2
0
        public void ErrorOnDanglingWhen()
        {
            var ctx = new ExtensionConfigContext(null, null, null, null);

            // Simulates extension initialization scope.
            {
                var binding = ctx.AddBindingRule <TestAttribute>();
                binding.WhenIsNull("Mode"); // Error! Dangling filter, should end in a Bind() call.
            }
            Assert.Throws <InvalidOperationException>(() => ctx.ApplyRules());
        }
        private static void InvokeExtensionConfigProviders(ExtensionConfigContext context)
        {
            IExtensionRegistry extensions = context.Config.GetExtensions();

            IEnumerable <IExtensionConfigProvider> configProviders = extensions.GetExtensions(typeof(IExtensionConfigProvider)).Cast <IExtensionConfigProvider>();

            foreach (IExtensionConfigProvider configProvider in configProviders)
            {
                context.Current = configProvider;
                configProvider.Initialize(context);
                context.ApplyRules();
            }
        }
        public IExtensionRegistry Create()
        {
            IExtensionRegistry registry = new DefaultExtensionRegistry();

            ExtensionConfigContext context = new ExtensionConfigContext(_nameResolver, _converterManager, _webHookProvider, registry);

            foreach (IExtensionConfigProvider extension in _registeredExtensions)
            {
                registry.RegisterExtension <IExtensionConfigProvider>(extension);
                context.Current = extension;
                extension.Initialize(context);
            }

            context.ApplyRules();

            return(registry);
        }