Beispiel #1
0
        private static object CallInterceptorChina(IEnumerable <IAspect> aspects, AspectMetadata lastest)
        {
            var            enumerator = aspects.GetEnumerator();
            AspectMetadata metadata   = lastest;
            IAspect        first      = !enumerator.MoveNext() ? new DefaultAspectAttribute() : enumerator.Current;

            while (enumerator.MoveNext())
            {
                IAspect    current    = enumerator.Current;
                Type       aspectType = current.GetType();
                Type[]     types      = new Type[] { typeof(AspectMetadata) };
                MethodInfo method     = aspectType.GetMethod("CallInterecptor", types);
                metadata = CreateAspectMetadata(method, current, types, new object[] { metadata });
            }
            return(first.CallInterecptor(metadata));
        }