Skip to content

Commit

Permalink
Merge pull request #139 from humhei/dynamic
Browse files Browse the repository at this point in the history
Remove dynamic keyword
  • Loading branch information
Arkatufus authored Jul 8, 2021
2 parents 77770e4 + e46f7f6 commit f652d7c
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 7 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
*.user
*.userosscache
*.sln.docstates

.ionide/**
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs

Expand Down
3 changes: 1 addition & 2 deletions src/Hyperion/SerializerFactories/ArraySerializerFactory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -71,8 +71,7 @@ public override ValueSerializer BuildSerializer(Serializer serializer, Type type
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);

Expand Down
9 changes: 5 additions & 4 deletions src/Hyperion/ValueSerializers/ConsistentArraySerializer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -71,15 +71,16 @@ public override void WriteValue(Stream stream, object value, SerializerSession s
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);
Expand Down

0 comments on commit f652d7c

Please sign in to comment.