Esempio n. 1
0
        public static List <T> GetFieldData <T>(List <string[]> data) where T : ISExcel
        {
            FieldInfo[] fields     = typeof(T).GetFields(BindingFlags.NonPublic | BindingFlags.DeclaredOnly | BindingFlags.Instance);
            List <T>    targetData = new List <T>();

            try
            {
                Type type = typeof(T);

                for (int i = 0; i < data.Count; i++)
                {
                    if (i == 0)     //Ignore Row 0 and 1
                    {
                        continue;
                    }

                    object obj = Activator.CreateInstance(type, true);
                    for (int j = 0; j < fields.Length; j++)
                    {
                        try
                        {
                            Type   phraseType  = fields[j].FieldType;
                            object value       = null;
                            string phraseValue = data[i][j].ToString();
                            if (phraseValue.Length == 0)
                            {
                                value = TDataConvert.Default(phraseType);
                            }
                            else
                            {
                                value = TDataConvert.Convert(phraseType, phraseValue);
                            }
                            fields[j].SetValue(obj, value);
                        }
                        catch (Exception e)
                        {
                            throw new Exception("Inner Info:|" + data[i + 1][j].ToString() + "|,Field:" + fields[j].Name + "|" + fields[j].FieldType.ToString() + ", Rows/Column:" + (i + 1).ToString() + "/" + (j + 1).ToString() + "    Message:" + e.Message);
                        }
                    }
                    T dataObject = (T)obj;
                    dataObject.InitAfterSet();
                    targetData.Add(dataObject);
                }
            }
            catch (Exception e)
            {
                Debug.LogError("Excel|" + typeof(T).Name.ToString() + " Error:" + e.Message + e.StackTrace);
            }
            return(targetData);
        }
Esempio n. 2
0
        public static Dictionary <T, Y> GetFieldData <T, Y>(List <string[]> data) where T : struct where Y : struct, ISExcel <T>
        {
            Type valueType = typeof(Y);

            FieldInfo[]       fields     = valueType.GetFields(BindingFlags.NonPublic | BindingFlags.DeclaredOnly | BindingFlags.Instance);
            Dictionary <T, Y> targetData = new Dictionary <T, Y>();

            try
            {
                for (int i = 1; i < data.Count; i++)                     //Ignore First Row
                {
                    T      key   = TDataConvert.Convert <T>(data[i][0]); //First Column Use As Key
                    object value = Activator.CreateInstance(valueType, true);
                    for (int j = 0; j < fields.Length; j++)
                    {
                        Type   phraseType  = fields[j].FieldType;
                        object fieldValue  = null;
                        string phraseValue = data[i][j + 1].ToString();
                        try
                        {
                            if (phraseValue.Length == 0)
                            {
                                fieldValue = TDataConvert.Default(phraseType);
                            }
                            else
                            {
                                fieldValue = TDataConvert.Convert(phraseType, phraseValue);
                            }
                            fields[j].SetValue(value, fieldValue);
                        }
                        catch (Exception e)
                        {
                            throw new Exception("Inner Info:|" + data[i][j + 1].ToString() + "|,Field:" + fields[j].Name + "|" + fields[j].FieldType.ToString() + ", Rows/Column:" + (i).ToString() + "/" + (j + 1).ToString() + "    Message:" + e.Message);
                        }
                    }
                    targetData.Add(key, (Y)value);
                }
            }
            catch (Exception e)
            {
                Debug.LogError("Excel|" + typeof(Y).Name.ToString() + " Error:" + e.Message + e.StackTrace);
            }
            return(targetData);
        }