Пример #1
0
        private BindableObjectClass CreateBindableObjectClass(Type type)
        {
            if (!IsBindableObjectImplementation(type))
            {
                if (type.ContainsGenericParameters)
                {
                    throw new ArgumentException(
                              string.Format(
                                  "The type '{0}' is not a bindable object implementation. Open generic types are not supported.",
                                  type.FullName),
                              "type");
                }

                throw new ArgumentException(
                          string.Format(
                              "The type '{0}' is not a bindable object implementation. It must either have a mixin derived from BindableObjectMixinBase<T> applied "
                              + "or implement the IBusinessObject interface and apply the BindableObjectBaseClassAttribute.",
                              type.FullName),
                          "type");
            }

            IClassReflector classReflector = _metadataFactory.CreateClassReflector(type, this);

            Assertion.IsNotNull(classReflector, "The IMetadataFactory.CreateClassReflector method evaluated and returned null.");

            return(classReflector.GetMetadata());
        }
        public void GetMetadata()
        {
            Assembly securityAssembly = typeof(IAccessTypeReflector).Assembly;
            Assembly assembly         = typeof(File).Assembly;

            Expect
            .Call(_accessTypeReflectorMock.GetAccessTypesFromAssembly(securityAssembly, _cache))
            .Return(new List <EnumValueInfo> (new EnumValueInfo[] { AccessTypes.Read, AccessTypes.Write }));
            Expect
            .Call(_accessTypeReflectorMock.GetAccessTypesFromAssembly(assembly, _cache))
            .Return(new List <EnumValueInfo> (new EnumValueInfo[] { AccessTypes.Journalize, AccessTypes.Archive }));
            Expect.Call(_abstractRoleReflectorMock.GetAbstractRoles(securityAssembly, _cache)).Return(new List <EnumValueInfo> ());
            Expect
            .Call(_abstractRoleReflectorMock.GetAbstractRoles(assembly, _cache))
            .Return(new List <EnumValueInfo> (new EnumValueInfo[] { AbstractRoles.Clerk, AbstractRoles.Secretary, AbstractRoles.Administrator }));
            Expect.Call(_classReflectorMock.GetMetadata(typeof(File), _cache)).Return(new SecurableClassInfo());
            Expect.Call(_classReflectorMock.GetMetadata(typeof(PaperFile), _cache)).Return(new SecurableClassInfo());
            _mocks.ReplayAll();

            _assemblyReflector.GetMetadata(assembly, _cache);

            _mocks.VerifyAll();
        }
        public void GetMetadata(Assembly assembly, MetadataCache cache)
        {
            ArgumentUtility.CheckNotNull("assembly", assembly);
            ArgumentUtility.CheckNotNull("cache", cache);

            Assembly securityAssembly = GetType().Assembly;

            _accessTypeReflector.GetAccessTypesFromAssembly(securityAssembly, cache);
            _accessTypeReflector.GetAccessTypesFromAssembly(assembly, cache);

            _abstractRoleReflector.GetAbstractRoles(securityAssembly, cache);
            _abstractRoleReflector.GetAbstractRoles(assembly, cache);

            foreach (Type type in AssemblyTypeCache.GetTypes(assembly))
            {
                if (typeof(ISecurableObject).IsAssignableFrom(type))
                {
                    _classReflector.GetMetadata(type, cache);
                }
            }
        }