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