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