Added scaffolding for ArrayAttribute specific conversion
This commit is contained in:
@@ -188,6 +188,9 @@ public class Reader {
|
||||
case DNAFieldAttribute fieldAttribute:
|
||||
value = ConvertNormalField(block, fieldAttribute, startOffset);
|
||||
break;
|
||||
case DNAArrayAttribute arrayAttribute:
|
||||
value = ConvertArrayField(block, field, arrayAttribute, startOffset);
|
||||
break;
|
||||
case DNAListAttribute listAttribute:
|
||||
value = ConvertListField(block, field, listAttribute, startOffset);
|
||||
break;
|
||||
@@ -195,17 +198,6 @@ public class Reader {
|
||||
continue; //should never happen.
|
||||
}
|
||||
|
||||
var type = field.FieldType;
|
||||
var valType = value?.GetType();
|
||||
if (valType != null && type != valType) {
|
||||
if (type.IsArray && valType.IsArray) {
|
||||
var array = (Array)value;
|
||||
var newArray = Array.CreateInstance(type.GetElementType()!, array.Length);
|
||||
Array.Copy(array, newArray, array.Length);
|
||||
value = newArray;
|
||||
}
|
||||
}
|
||||
|
||||
field.SetValue(obj, value);
|
||||
|
||||
//Add the freshly handled object to the database
|
||||
@@ -215,6 +207,10 @@ public class Reader {
|
||||
objects.Add((block.MemAddr.ToPointer() + startOffset, obj!.GetType()), obj!);
|
||||
}
|
||||
|
||||
private object? ConvertArrayField(FileBlock block, FieldInfo field, DNAArrayAttribute arrayAttribute, IntPtr startOffset) {
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
private void FillObject(IntPtr ptr, ref object? obj, FieldInfo[] fieldMetadata)
|
||||
{
|
||||
var block = GetBlock(ptr.ToInt64());
|
||||
|
||||
Reference in New Issue
Block a user