AddCommonType目前不支持MultiSet (或SortedMultiSet),尽管它支持大多数Stroika容器类。
例:
`ObjectVariantMapper ovm;
ovm.AddCommonType<Containers::Set<String>> (); // works fine
ovm.AddCommonType<Containers::MultiSet<String>> (); // fails`产生
'Stroika::Foundation::DataExchange::ObjectVariantMapper::MakeCommonSerializer_':6重载中没有一个能转换所有参数类型PS2 C:\work\PS2\ThirdPartyComponents\Stroika\StroikaRoot\Library\Sources\Stroika\Foundation\DataExchange\ObjectVariantMapper.inl
发布于 2022-11-10 21:51:10
此问题将在Stroika数据库https://stroika.atlassian.net/browse/STK-951中跟踪。
而且它是固定的,用于选通v2.1.9 (https://github.com/SophistSolutions/Stroika/releases/tag/v2.1.9 )。
修复是ObjectVariantMapper::AddCommonType ()支持的MultiMap<>。
但是,对于在ObjectVariantMapper::MakeCommonSerializer_WithAdder().中不支持内置的容器类型,如果它们可以通过容器::适配器::加法器添加,则可以使用ObjectVariantMapper添加序列化程序。
例如,这是在Stroika回归测试中进行的:
ObjectVariantMapper mapper;
MultiSet<int> s1;
mapper.AddCommonType<CountedValue<int>> ();
mapper.Add (ObjectVariantMapper::MakeCommonSerializer_WithAdder<MultiSet<int>> ());
s1.Add (2);
s1.Add (2);
s1.Add (3);
VariantValue sAsVariant = mapper.FromObject (s1);
MultiSet<int> mappedBackToObject = mapper.ToObject<MultiSet<int>> (sAsVariant);
VerifyTestResult (s1 == mappedBackToObject);https://stackoverflow.com/questions/74395388
复制相似问题