Esempio n. 1
0
        public static void AddRange <T>(this ICollection <T> items, object vt, Func <T> factory = null) where T : class
        {
            object[,] vtdata = vt as object[, ];

            int n = vtdata.GetLength(0);
            int k = vtdata.GetLength(1);

            Type t = typeof(T);


            bool implementsIXlObjectMapping = typeof(IXLObjectMapping).IsAssignableFrom(t);

            XLObjectMapping map = implementsIXlObjectMapping ? null : _types.GetOrAdd(t, f => new XLObjectMapping(t));

            for (int i = 0; i < n; i++)
            {
                T instance = (factory != null) ? factory() : (t.GetConstructor(Type.EmptyTypes) != null) ? (T)Activator.CreateInstance(t, new object[0])
                            : (T)Activator.CreateInstance(t, true);


                if (implementsIXlObjectMapping)
                {
                    var xlob = instance as IXLObjectMapping;
                    for (int j = 0; j < k; j++)
                    {
                        xlob.SetColumn(j, vtdata[i, j]);
                    }
                }
                else
                {
                    for (int j = 0; j < k; j++)
                    {
                        map.SetColumn(instance, j, vtdata[i, j]);
                    }
                }

                items.Add(instance);
            }
        }
Esempio n. 2
0
 public static void SetObjectMapping(XLObjectMapping mapping)
 {
     _types.AddOrUpdate(mapping.MappedType, mapping, (t, m) => mapping);
 }