internal StructFieldVisitor( VisitorFactory <TData> visitorFactory, PropertyInfo property, ProcessField <TData, TObj, V> process, MustVisitStatus mustVisit) : base(visitorFactory, property, process, mustVisit) { }
internal ClassVisitor( VisitorFactory <TData> visitorFactory, ProcessObject <TData, TObj> process, MustVisitStatus mustVisit) : base(mustVisit) { allFieldVisitors = new Lazy <ImmutableArray <FieldVisitor <TData, TObj> > >(() => (from property in typeof(TObj).GetProperties( BindingFlags.FlattenHierarchy | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic) where property.CanRead let method = property.GetMethod where !method.MethodImplementationFlags.HasFlag(MethodImplAttributes.InternalCall) select visitorFactory.CreateFieldVisitor <TObj>(property)) .ToImmutableArray()); enabledFieldVisitors = new Lazy <ImmutableArray <FieldVisitor <TData, TObj> > >(() => allFieldVisitors.Value .Where(fieldVisitor => fieldVisitor.ShouldVisit()) .ToImmutableArray()); this.process = process; }