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