public Data GetDataWithId(int id) { return(Data[GlobalId.GetInstanceId(id)]); }
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); } } }
public T GetDataWithId <T>(int id) where T : Data { return(Datas[GlobalId.GetInstanceId(id)] as T); }
public int GetInstanceId() { return(GlobalId.GetInstanceId(_id)); }