public static void AddExtensionDependencies <T>(IKernel kernel, WcfExtensionScope scope, ComponentModel model) { foreach (var handler in FindExtensions <T>(kernel, scope)) { AddExtensionDependency(null, handler.ComponentModel.Services.Single(), model); } }
private static bool ScopesCompatible(WcfExtensionScope extendeeScope, WcfExtensionScope extensionScope) { if ((extensionScope != WcfExtensionScope.Explicit || extendeeScope == WcfExtensionScope.Explicit)) { return(extendeeScope == extensionScope || extendeeScope == WcfExtensionScope.Undefined || extensionScope == WcfExtensionScope.Undefined); } return(false); }
public static IEnumerable <IHandler> FindExtensions(IKernel kernel, WcfExtensionScope scope, Type type) { foreach (var handler in kernel.GetAssignableHandlers(type)) { var model = handler.ComponentModel; var extensionsScope = GetScope(model); if (ScopesCompatible(scope, extensionsScope)) { yield return(handler); } } }
public static void ExtendBehavior(IKernel kernel, WcfExtensionScope scope, object behavior, CreationContext context) { var behaviorType = behavior.GetType(); if (IsExtensibleOfItself(behaviorType) == false) { return; } var extensionType = typeof(IExtension <>).MakeGenericType(behaviorType); foreach (var extensionHandler in FindExtensions(kernel, scope, extensionType)) { var extension = extensionHandler.Resolve(context); AttachExtension(behavior, extension); } }
internal static void AddBehaviors <T>(IKernel kernel, WcfExtensionScope scope, KeyedByTypeCollection <T> behaviors, IWcfBurden burden, Predicate <T> predicate) { foreach (var handler in FindExtensions <T>(kernel, scope)) { T behavior = (T)handler.Resolve(CreationContext.CreateEmpty()); if (predicate == null || predicate(behavior)) { if (behaviors != null) { behaviors.Add(behavior); } if (burden != null) { burden.Add(behavior); } } } }
public WcfEndpointExtensions(WcfExtensionScope scope) { this.scope = scope; }
internal static void AddBehaviors <T>(IKernel kernel, WcfExtensionScope scope, KeyedByTypeCollection <T> behaviors, IWcfBurden burden) { AddBehaviors(kernel, scope, behaviors, burden, null); }
public static IEnumerable <IHandler> FindExtensions <T>(IKernel kernel, WcfExtensionScope scope) { return(FindExtensions(kernel, scope, typeof(T))); }