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); } }
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); }