private static Dictionary <MemberInfoIdentity, MethodDescriptor> GetMethodsAttributes(Type type) { Dictionary <MemberInfoIdentity, MethodDescriptor> methodAttributes = new Dictionary <MemberInfoIdentity, MethodDescriptor>(); foreach (MethodInfo method in type.GetMethods(BindingFlagsSet.AllInstance).Where(m => !m.IsEventAccessor() && (m.IsPublic || m.IsFinal))) { MethodOperationStrategy operationStrategy = MethodOperationStrategy.Auto; if (method.IsDefinedOnMethodOrProperty(typeof(ChangeTrackingIgnoreOperationAttribute), true) || method.IsDefinedOnMethodOrProperty(typeof(ChangeTrackingIgnoreField), true)) { operationStrategy = MethodOperationStrategy.Never; } else if (method.IsDefined(typeof(ChangeTrackingForceOperationAttribute), true)) { operationStrategy = MethodOperationStrategy.Always; } string operationName = method.GetCustomAttributeFromMethodOrProperty <OperationNameAttribute>(false).Select(a => a.Name).FirstOrDefault(); methodAttributes.Add(new MemberInfoIdentity(method), new MethodDescriptor(operationStrategy, operationName)); } return(methodAttributes); }
public MethodDescriptor(MethodOperationStrategy methodOperationStrategy, string operationName = null) { this.MethodOperationStrategy = methodOperationStrategy; this.OperationName = operationName; }