fix(serial): Fixes type inference for serialization (#592)

This commit is contained in:
Kamron Batman 2021-05-09 11:33:06 -07:00 committed by GitHub
parent 0afdc075cb
commit be9d355b33
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -645,17 +645,18 @@ namespace Server
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static void RemoveGuild(BaseGuild guild) => Guilds.Remove(guild.Serial);
private struct TypeOf<T> { }
public static T ReadEntity<T>(this IGenericReader reader) where T : class, ISerializable
{
Serial serial = reader.ReadUInt();
var typeT = typeof(T);
return default(TypeOf<T>) switch
// Add to this list when creating new serializable types
if (typeof(BaseGuild).IsAssignableTo(typeT))
{
TypeOf<BaseGuild> => FindGuild(serial) as T,
TypeOf<IEntity> => FindEntity<IEntity>(serial) as T,
_ => default
};
return FindGuild(serial) as T;
}
return FindEntity<IEntity>(serial) as T;
}
public static List<T> ReadEntityList<T>(this IGenericReader reader) where T : class, ISerializable