IEnumerable <AspectInstance> IAspectProvider.ProvideAspects(object targetElement) { var targetType = (Type)targetElement; foreach (var location in targetType.GetFields(BindingFlags.Instance | BindingFlags.Public).Union( targetType.GetProperties(BindingFlags.Instance | BindingFlags.Public).Cast <MemberInfo>())) { if (location.IsDefined(typeof(RequiresPermissionBaseAttribute), true)) { continue; } var aspect = new LocationAuthorizationAspect(); aspect.AddPermission(0, permissionFactory); aspect.AddPermission(0, permissionFactory); yield return(new AspectInstance(location, aspect)); } }