Merge pull request #139 from humhei/dynamic

Remove dynamic keyword
This commit is contained in:
Gregorius Soedharmo 2021-07-08 22:34:00 +07:00 коммит произвёл GitHub
Родитель 77770e4a3c e46f7f666c
Коммит f652d7c91b
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
3 изменённых файлов: 7 добавлений и 7 удалений

2
.gitignore поставляемый
Просмотреть файл

@ -6,7 +6,7 @@
*.user
*.userosscache
*.sln.docstates
.ionide/**
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs

Просмотреть файл

@ -71,8 +71,7 @@ namespace Hyperion.SerializerFactories
session.TrackSerializedObject(arr);
}
// This janky way of converting array to Array is done to get around the problem of ValueType arrays
WriteValues(((IEnumerable)arr).Cast<object>().ToArray(), stream, elementType, elementSerializer, session);
WriteValues((Array)arr, stream, elementType, elementSerializer, session);
};
arraySerializer.Initialize(reader, writer);

Просмотреть файл

@ -71,15 +71,16 @@ namespace Hyperion.ValueSerializers
var elementSerializer = session.Serializer.GetSerializerByType(elementType);
elementSerializer.WriteManifest(stream, session); //write array element type
// ReSharper disable once PossibleNullReferenceException
WriteValues((dynamic)value, stream,elementSerializer,session);
WriteValues((Array)value, stream,elementSerializer,session);
}
private static void WriteValues<T>(T[] array, Stream stream, ValueSerializer elementSerializer, SerializerSession session)
private static void WriteValues(Array array, Stream stream, ValueSerializer elementSerializer, SerializerSession session)
{
var tp = array.GetType();
Int32Serializer.WriteValueImpl(stream,array.Length,session);
if (typeof(T).IsFixedSizeType())
if (tp.IsFixedSizeType())
{
var size = typeof(T).GetTypeSize();
var size = tp.GetTypeSize();
var result = new byte[array.Length * size];
Buffer.BlockCopy(array, 0, result, 0, result.Length);
stream.Write(result);