Added scaffolding for ArrayAttribute specific conversion
This commit is contained in:
@@ -188,23 +188,15 @@ public class Reader {
|
|||||||
case DNAFieldAttribute fieldAttribute:
|
case DNAFieldAttribute fieldAttribute:
|
||||||
value = ConvertNormalField(block, fieldAttribute, startOffset);
|
value = ConvertNormalField(block, fieldAttribute, startOffset);
|
||||||
break;
|
break;
|
||||||
|
case DNAArrayAttribute arrayAttribute:
|
||||||
|
value = ConvertArrayField(block, field, arrayAttribute, startOffset);
|
||||||
|
break;
|
||||||
case DNAListAttribute listAttribute:
|
case DNAListAttribute listAttribute:
|
||||||
value = ConvertListField(block, field, listAttribute, startOffset);
|
value = ConvertListField(block, field, listAttribute, startOffset);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
continue; //should never happen.
|
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);
|
field.SetValue(obj, value);
|
||||||
|
|
||||||
@@ -215,6 +207,10 @@ public class Reader {
|
|||||||
objects.Add((block.MemAddr.ToPointer() + startOffset, obj!.GetType()), obj!);
|
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)
|
private void FillObject(IntPtr ptr, ref object? obj, FieldInfo[] fieldMetadata)
|
||||||
{
|
{
|
||||||
var block = GetBlock(ptr.ToInt64());
|
var block = GetBlock(ptr.ToInt64());
|
||||||
|
|||||||
Reference in New Issue
Block a user