private object CreateNewProxy(ObjectTypeDescriptor typeDescriptor, ObjectState objectState) { var interceptor = new ObjectStateManagementInterceptor(objectState, typeDescriptor, GetById); var proxy = proxyGenerator.CreateClassProxy(typeDescriptor.RuntimeType, interceptor); return(proxy); }
public ObjectTypeDescriptorRepository RegisterTypeDescriptor(ObjectTypeDescriptor typeDescriptor) { if (map.ContainsKey(typeDescriptor.ObjectTypeId)) { throw new InvalidOperationException(string.Format("Another type with same id {0} has already been registered.", typeDescriptor.ObjectTypeId)); } map[typeDescriptor.ObjectTypeId] = typeDescriptor; return this; }
public static ObjectTypeDescriptorRepository RegisterUsingReflection(this ObjectTypeDescriptorRepository repository, Type typeToRegister) { var typeAttibute = GetTypeAttibute(typeToRegister); var objectTypeId = new ObjectTypeId(new Guid(typeAttibute.TypeIdValue)); var typeDescritor = new ObjectTypeDescriptor(typeToRegister, objectTypeId, DiscoverAttributes(typeToRegister), DiscoverRelations(typeToRegister)); repository.RegisterTypeDescriptor(typeDescritor); return(repository); }
public ObjectTypeDescriptorRepository RegisterTypeDescriptor(ObjectTypeDescriptor typeDescriptor) { if (map.ContainsKey(typeDescriptor.ObjectTypeId)) { throw new InvalidOperationException(string.Format("Another type with same id {0} has already been registered.", typeDescriptor.ObjectTypeId)); } map[typeDescriptor.ObjectTypeId] = typeDescriptor; return(this); }
public ObjectStateManagementInterceptor(ObjectState objectState, ObjectTypeDescriptor objectTypeDescriptor, Func <ObjectId, object> hydrateCallback) { this.objectState = objectState; this.objectTypeDescriptor = objectTypeDescriptor; this.hydrateCallback = hydrateCallback; }