Ejemplo n.º 1
0
 public Data GetDataWithId(int id)
 {
     return(Data[GlobalId.GetInstanceId(id)]);
 }
Ejemplo n.º 2
0
        public void LoadData(Data data, Type type, Row row, int dataType = -1)
        {
            _dataType = dataType;
            _id       = GlobalId.CreateGlobalId(_dataType, DataTable.Count());

            foreach (var property in type.GetProperties())
            {
                if (property.PropertyType.IsGenericType)
                {
                    var listType     = typeof(List <>);
                    var generic      = property.PropertyType.GetGenericArguments();
                    var concreteType = listType.MakeGenericType(generic);
                    var newList      = Activator.CreateInstance(concreteType);
                    var add          = concreteType.GetMethod("Add");
                    var indexerName  =
                        ((DefaultMemberAttribute)newList.GetType()
                         .GetCustomAttributes(typeof(DefaultMemberAttribute), true)[0]).MemberName;
                    var indexProperty = newList.GetType().GetProperty(indexerName);

                    for (var i = row.GetRowOffset(); i < row.GetRowOffset() + row.GetArraySize(property.Name); i++)
                    {
                        var value = row.GetValue(property.Name, i - row.GetRowOffset());

                        if (value == string.Empty && i != row.GetRowOffset())
                        {
                            value = indexProperty.GetValue(
                                newList,
                                new object[]
                            {
                                i - row.GetRowOffset() - 1
                            }).ToString();
                        }

                        if (string.IsNullOrEmpty(value))
                        {
                            var _Object = generic[0].IsValueType ? Activator.CreateInstance(generic[0]) : string.Empty;

                            if (add != null)
                            {
                                add.Invoke(
                                    newList,
                                    new[]
                                {
                                    _Object
                                });
                            }
                        }
                        else
                        {
                            if (add != null)
                            {
                                add.Invoke(
                                    newList,
                                    new[]
                                {
                                    Convert.ChangeType(value, generic[0])
                                });
                            }
                        }
                    }

                    property.SetValue(data, newList);
                }
                else
                {
                    property.SetValue(data,
                                      row.GetValue(property.Name, 0) == string.Empty
                            ? null
                            : Convert.ChangeType(row.GetValue(property.Name, 0), property.PropertyType), null);
                }
            }
        }
Ejemplo n.º 3
0
 public T GetDataWithId <T>(int id) where T : Data
 {
     return(Datas[GlobalId.GetInstanceId(id)] as T);
 }
Ejemplo n.º 4
0
 public int GetInstanceId()
 {
     return(GlobalId.GetInstanceId(_id));
 }