Пример #1
0
 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);
     }
 }
Пример #2
0
 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);
 }
Пример #3
0
 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);
         }
     }
 }
Пример #4
0
        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);
            }
        }
Пример #5
0
 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;
		}
Пример #7
0
 public WcfEndpointExtensions(WcfExtensionScope scope)
 {
     this.scope = scope;
 }
Пример #8
0
 internal static void AddBehaviors <T>(IKernel kernel, WcfExtensionScope scope,
                                       KeyedByTypeCollection <T> behaviors, IWcfBurden burden)
 {
     AddBehaviors(kernel, scope, behaviors, burden, null);
 }
Пример #9
0
 public static IEnumerable <IHandler> FindExtensions <T>(IKernel kernel, WcfExtensionScope scope)
 {
     return(FindExtensions(kernel, scope, typeof(T)));
 }