Ejemplo n.º 1
0
        public static Func <IEnumerable <object>, ILogger, T> GetValueGetter <T>(bool allowsMultiple, bool cellTypeIsEnumerable)
        {
            var key = new ValueGetterKey(typeof(T), allowsMultiple, cellTypeIsEnumerable);

            if (Getters.TryGetValue(key, out object valueGetter))
            {
                return((Func <IEnumerable <object>, ILogger, T>)valueGetter);
            }

            var valueGetter2 = BuildValueGetter <T>(allowsMultiple, cellTypeIsEnumerable);

            Getters.GetOrAdd(key, valueGetter2);
            return(valueGetter2);
        }
Ejemplo n.º 2
0
        public static object GetValueGetter(Type objectType, bool allowsMultiple, bool cellTypeIsEnumerable)
        {
            var key = new ValueGetterKey(objectType, allowsMultiple, cellTypeIsEnumerable);

            if (Getters.TryGetValue(key, out object valueGetter))
            {
                return(valueGetter);
            }

            return(ReflectionUtils
                   .GetMethod(() => GetValueGetter <object>(true, true), objectType)
                   .Invoke(null, new[]
            {
                allowsMultiple?TrueObject: FalseObject,
                cellTypeIsEnumerable ? TrueObject : FalseObject
            }));
        }