Open czmirek opened 1 year ago
So I tried copying the source code of MemoryPack serializer and another issue showed up, apparently UseDisk
cannot really be used with WithMemoryPack
because the serialized value is not the serialized class but EasyCaching.Disk.DiskCacheValue
so I cannot add the [MemoryPackable]
attribute to it.
MemoryPack
uses source generators so you cannot specify the serialization in runtime. This means that UseDisk
must either support MemoryPack
explicitly by specifying a different DiskCacheValue
type or the DiskCacheValue
must be serialized/deserialized using a different serializer.
Simple reproduction. Create new console project, add following nugets.
Copy & paste the following code and run.
Expected behavior: No exception is thrown,
Test
class value is cached on disk with CACHE_KEY in MemoryPack format.Actual behavior:
System.MissingMethodException: 'Method not found: 'Void MemoryPack.MemoryPackSerializerOptions.set_StringEncoding(MemoryPack.StringEncoding)'.'
Call stack
Also, I was little surprised by the first line in the call stack
at EasyCaching.Serialization.Json.MemoryPackOptionsExtension.<AddServices>b__3_1(IServiceProvider x)
...because MemoryPack is binary serialization, not JSON.
So I looked here to see that indeed
MemoryPackOptionsExtension
is indeed in theEasyCaching.Serialization.Json
namespace.