~ruther/NosSmooth

ce641b85ae1ec404836182329c91b611500ea38f — František Boháček 3 years ago 7acc677
feat: add packet types from the packets assembly to PacketTypesRepository
1 files changed, 19 insertions(+), 1 deletions(-)

M Core/NosSmooth.Packets/Extensions/ServiceCollectionExtensions.cs
M Core/NosSmooth.Packets/Extensions/ServiceCollectionExtensions.cs => Core/NosSmooth.Packets/Extensions/ServiceCollectionExtensions.cs +19 -1
@@ 34,7 34,25 @@ public static class ServiceCollectionExtensions
        return serviceCollection
            .AddSingleton<ITypeConverterRepository, TypeConverterRepository>()
            .AddSingleton<IPacketSerializer, PacketSerializer>()
            .AddSingleton<IPacketTypesRepository, PacketTypesRepository>()
            .AddSingleton<IPacketTypesRepository>(p =>
            {
                var repository = new PacketTypesRepository(p.GetRequiredService<ITypeConverterRepository>());
                var packetTypes = typeof(ServiceCollectionExtensions).Assembly
                    .GetExportedTypes()
                    .Where(x => x != typeof(UnresolvedPacket) && !x.IsAbstract && typeof(IPacket).IsAssignableFrom(x));
                foreach (var packetType in packetTypes)
                {
                    var result = repository.AddPacketType(packetType);
                    if (!result.IsSuccess)
                    {
                        // TODO: figure out how to handle this.
                        throw new Exception(result.Error.Message);
                    }
                }

                return repository;
            })
            .AddGeneratedSerializers(typeof(ServiceCollectionExtensions).Assembly)
            .AddBasicConverters();
    }


Do not follow this link