示例#1
0
        public AspectsMap(IAspectMemebrsCollection aspectMembers)
        {
            var mapper = new AspectAttributesMemberMatcher(aspectMembers);

            map = new List<AspectMap>(mapper);
            EnsureValidAspects(map);
        }
 public AspectAttributesMemberMatcher(IAspectMemebrsCollection aspectMembersCollection)
 {
     registry = new ConcurrentDictionary <int, AspectMap>();
     CollectEventsAspectDefinitions(aspectMembersCollection);
     CollectMethodsAspectDefinitions(aspectMembersCollection);
     CollectPropertiesAspectDefinitions(aspectMembersCollection);
 }
示例#3
0
        public AspectsMap(IAspectMemebrsCollection aspectMembers)
        {
            var mapper = new AspectAttributesMemberMatcher(aspectMembers);

            map = new List <AspectMap>(mapper);
            EnsureValidAspects(map);
        }
        public AspectAttributesMemberMatcher(Type aspectDeclaringType, IAspectMemebrsCollection aspectMembersCollection)
        {
            Values = aspectMembersCollection.Select(aspectMembers => {
                var aspects = aspectMembers.Members.SelectMany(member => {
                    var onMethodBoundaryAspects   = member.GetCustomAttributes <OnMethodBoundaryAspectAttribute>();
                    var methodInterceptionAspects = member.GetCustomAttributes <MethodInterceptionAspectAttribute>();

                    var onMethodBoundaryAspectDefinitions = onMethodBoundaryAspects.Select(aspect => {
                        return(new OnMethodBoundaryAspectDefinition(aspect, aspectDeclaringType, aspectMembers.Target));
                    });

                    var methodInterceptionAspectDefinitions = methodInterceptionAspects.Select(aspect => {
                        return(new MethodInterceptionAspectDefinition(aspect, aspectDeclaringType, aspectMembers.Target));
                    });

                    return(methodInterceptionAspectDefinitions.Cast <IAspectDefinition>()
                           .Concat(onMethodBoundaryAspectDefinitions));
                });

                var aspectsCollection = new AspectDefinitionCollection(aspects) as IAspectDefinitionCollection;

                return(Tuple.Create(aspectMembers.Target, aspectsCollection));
            });
        }
示例#5
0
 public CompositeMemberMapper(IAspectsMap aspectMap, IAspectMemebrsCollection aspectMembersCollection)
 {
     MapEvents(aspectMap, aspectMembersCollection.Events);
     MapMethods(aspectMap, aspectMembersCollection.Methods);
     MapProperties(aspectMap, aspectMembersCollection.Properties);
 }
示例#6
0
 public CompositeMemberMapper(IAspectsMap aspectMap, IAspectMemebrsCollection aspectMembersCollection)
 {
     MapEvents(aspectMap, aspectMembersCollection.Events);
     MapMethods(aspectMap, aspectMembersCollection.Methods);
     MapProperties(aspectMap, aspectMembersCollection.Properties);
 }
示例#7
0
 public AspectsMap(Type compositeType, IAspectMemebrsCollection aspectMembers)
 {
     matcher = new AspectAttributesMemberMatcher(compositeType, aspectMembers);
     map     = new List <AspectMap>(matcher.Select(tuple => new AspectMap(tuple.Item1, tuple.Item2)));
     EnsureValidAspects(map);
 }