public static MethodBehaviors BuildBehaviors(Type proxyType, MethodBehaviors behaviorOverrides, List <MethodInfo> methodsList)
        {
            if (behaviorOverrides == null)
            {
                behaviorOverrides = new MethodBehaviors();
            }
            List <MethodInfo> methods = ProxyMethodsConverter.GetMethods(proxyType, methodsList);

            // Copy received ones so that we don't modify original argument value.
            MethodBehaviors behaviors = new MethodBehaviors();

            if (behaviorOverrides != null)
            {
                foreach (MethodBehavior behavior in behaviorOverrides)
                {
                    behaviors.Add(behavior);
                    MethodBehaviorHelper.RemoveMethod(methods, behavior.Method);
                }
            }

            // Add the remaining ones as not-overriden behaviors.
            foreach (MethodInfo method in methods)
            {
                behaviors.Add(new MethodBehavior(method, false));
            }

            return(behaviors);
        }
        public static bool HasOverloadedMethods(string methodName, MethodBehaviors methodBehaviors)
        {
            List <MethodBehavior> filteredMethods = methodBehaviors.FindAll(delegate(MethodBehavior innerBehavior)
            {
                return(innerBehavior.Method.Name == methodName);
            });

            return(filteredMethods.Count > 1);
        }
        public static List <string> BuildImports(MethodBehaviors behaviors)
        {
            List <MethodInfo> methods = new List <MethodInfo>(behaviors.Count);

            foreach (MethodBehavior behavior in behaviors)
            {
                methods.Add(behavior.Method);
            }

            return(BuildImports(methods));
        }
Exemplo n.º 4
0
        public static MethodBehaviors GetMethodsBehavior(Type dsaType, Type proxyType)
        {
            MethodBehaviors   behaviors       = new MethodBehaviors();
            List <MethodInfo> methods         = GetAgentMethods(dsaType, proxyType);
            OfflineBehavior   defaultBehavior = GetDefaultBehavior(dsaType);

            foreach (MethodInfo method in methods)
            {
                OfflineBehavior methodOfflineBehavior = GetMethodBehavior(dsaType, method.Name);
                MethodBehavior  behavior = GenerateMethodBehavior(method, methodOfflineBehavior, defaultBehavior);

                behaviors.Add(behavior);
            }

            return(behaviors);
        }
Exemplo n.º 5
0
 private static string BuildConflictMessage(DuringCallbackEventArgs args, MethodBehaviors lastOption, Aspect lastAspect, Aspect currentAspect)
 {
     return string.Format(
         @"Two aspects requested conflicting behavior.
     Method:{0}.{1}
     Aspect {2} requested {3}
     Aspect {4} requested {5}",
         args.TypeName, args.MethodName,
         lastAspect.GetType().Name, lastOption,
         currentAspect.GetType().Name, args.MethodBehavior);
 }