// Copyright © 2014 The CefSharp Authors. All rights reserved. // // Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. using System; using System.ServiceModel.Description; namespace CefSharp.Internals { internal static class WCFExtensions { public static void ApplyOperationBehavior(this ServiceDescription description, Func behaviorFactory, Action behaviorManipulation) where T : class, IOperationBehavior { foreach (ServiceEndpoint ep in description.Endpoints) { ep.ApplyOperationBehavior(behaviorFactory, behaviorManipulation); } } public static void ApplyOperationBehavior(this ServiceEndpoint endpoint, Func behaviorFactory, Action behaviorManipulation) where T : class, IOperationBehavior { foreach (OperationDescription op in endpoint.Contract.Operations) { T behavior = op.Behaviors.Find(); if (behavior == null) { behavior = behaviorFactory(op); op.Behaviors.Add(behavior); } behaviorManipulation(behavior); } } public static void ApplyServiceBehavior(this ServiceDescription description, Func behaviorFactory, Action behaviorManipulation) where T : class, IServiceBehavior { T behavior = description.Behaviors.Find(); if (behavior == null) { behavior = behaviorFactory(); description.Behaviors.Add(behavior); } behaviorManipulation(behavior); } } }