コード例 #1
0
        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));
            }
        }