using FishNet.Documenting;
using FishNet.Utility;
using System;
using System.Runtime.CompilerServices;
[assembly: InternalsVisibleTo(UtilityConstants.GENERATED_ASSEMBLY_NAME)]
//Required for internal tests.
[assembly: InternalsVisibleTo(UtilityConstants.TEST_ASSEMBLY_NAME)]
namespace FishNet.Serializing
{
///
/// Used for read references to generic types.
///
///
[APIExclude]
public static class GenericReader
{
public static Func Read { get; set; }
public static Func ReadAutoPack { get; set; }
///
/// True if this type has a custom writer.
///
private static bool _hasCustomSerializer;
public static void SetReadUnpacked(Func value)
{
/* If a custom serializer has already been set then exit method
* to not overwrite serializer. */
if (_hasCustomSerializer)
return;
//Set has custom serializer if value being used is not a generated method.
_hasCustomSerializer = !(value.Method.Name.StartsWith(UtilityConstants.GENERATED_READER_PREFIX));
Read = value;
}
public static void SetReadAutoPacked(Func value)
{
ReadAutoPack = value;
}
}
}