public DataColumn BuildColumn(DataField field, Array classInstances, int classInstancesCount) { Array data = Array.CreateInstance(field.ClrNullableIfHasNullsType, classInstancesCount); CollectorTag tag = GetCollectorTag(new TypeCachingKey(_classType, field)); int collected = tag.Collect(classInstances, data, classInstancesCount); return(new DataColumn(field, data)); }
private CollectorTag GetCollectorTag(TypeCachingKey key) { if (!_collectorKeyToTag.TryGetValue(key, out CollectorTag value)) { value = new CollectorTag { Collect = CreateCollectorDelegate(key.ClassType, key.Field) }; _collectorKeyToTag[key] = value; } return(value); }