Beispiel #1
0
        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));
         }
     }
 }