public static void Compile( IDictionary <FieldReference, RegisteredResolver> resolvers) { if (resolvers == null) { throw new ArgumentNullException(nameof(resolvers)); } foreach (var item in resolvers.ToArray()) { RegisteredResolver registered = item.Value; if (registered.Field is FieldMember member) { ResolverDescriptor descriptor = registered.IsSourceResolver ? new ResolverDescriptor( registered.SourceType, member) : new ResolverDescriptor( registered.ResolverType, registered.SourceType, member); resolvers[item.Key] = registered.WithField( ExpressionCompiler.Resolve.Compile(descriptor)); } } }
private void AddResolvers( IDescriptorContext context, ObjectType objectType, Type resolverType) { foreach (MemberInfo member in context.Inspector.GetMembers(resolverType)) { if (IsResolverRelevant(objectType.ClrType, member)) { NameString fieldName = context.Naming.GetMemberName( member, MemberKind.ObjectField); var fieldMember = new FieldMember( objectType.Name, fieldName, member); var resolver = new RegisteredResolver( resolverType, objectType.ClrType, fieldMember); _res[fieldMember.ToFieldReference()] = resolver; } } }
private void CompileResolvers() { foreach (KeyValuePair <FieldReference, RegisteredResolver> item in _resolvers.ToArray()) { RegisteredResolver registered = item.Value; if (registered.Field is FieldMember member) { ResolverDescriptor descriptor = registered.IsSourceResolver ? new ResolverDescriptor( registered.SourceType, member) : new ResolverDescriptor( registered.ResolverType, registered.SourceType, member); _resolvers[item.Key] = registered.WithField( ResolverCompiler.Resolve.Compile(descriptor)); } } }