static bool Read(ViIStream IS, object obj) { FieldInfo[] fieldList = ViSealedDataAssisstant.GetFeilds(obj.GetType()); foreach (FieldInfo field in fieldList) { if (field.FieldType.Equals(typeof(Int32))) { if (ReadInt32Field(IS, field, ref obj) == false) { return(false); } } else if (field.FieldType.Equals(typeof(String))) { if (ReadStringField(IS, field, ref obj) == false) { return(false); } } else { if (field.FieldType.IsGenericType) { field.FieldType.GetGenericTypeDefinition(); if (field.FieldType.GetGenericTypeDefinition() == ViStaticArrayType) { if (ReadArray(IS, field, ref obj) == false) { return(false); } } else { if (ReadStructInt32Field(IS, field, ref obj) == false) { return(false); } } } else { object fieldObject = field.GetValue(obj); if (Read(IS, fieldObject) == false) { return(false); } field.SetValue(obj, fieldObject); } } } return(true); }
static bool Read(ViStringIStream IS, object obj) { FieldInfo[] fieldList = ViSealedDataAssisstant.GetFeilds(obj.GetType()); foreach (FieldInfo field in fieldList) { if (field.FieldType.Equals(typeof(Int32))) { if (ReadInt32Field(IS, field, ref obj) == false) { return(false); } } else if (field.FieldType.Equals(typeof(String))) { if (ReadStringField(IS, field, ref obj) == false) { return(false); } } else if (field.FieldType.Name.StartsWith("ViMask32")) { if (ReadStructInt32Field(IS, field, ref obj) == false) { return(false); } } else if (field.FieldType.Name.StartsWith("ViEnum32")) { if (ReadStructInt32Field(IS, field, ref obj) == false) { return(false); } } else if (field.FieldType.Name.StartsWith("ViForeignKey32")) { if (ReadStructInt32Field(IS, field, ref obj) == false) { return(false); } } else if (field.FieldType.Name.StartsWith("ViStaticArray")) { object fieldObject = field.GetValue(obj); int len = ViArrayParser.Length(fieldObject); for (int idx = 0; idx < len; ++idx) { object elementObject = ViArrayParser.Object(fieldObject, idx); if (Read(IS, elementObject) == false) { return(false); } field.SetValue(obj, fieldObject); } } else { object fieldObject = field.GetValue(obj); if (Read(IS, fieldObject) == false) { return(false); } field.SetValue(obj, fieldObject); } } return(true); }