Re: Как сериалиpовать неизвестный IDictionary
От: rameel https://github.com/rsdn/CodeJam
Дата: 24.12.24 19:49
Оценка: 11 (2) +1
Здравствуйте, Barbar1an, Вы писали:


B>
B>    Serialize(BinaryWriter writer, object val, Type type)
B>    {
B>        if(val is IDictionary d)
B>        {
B>            writer.Write7BitEncodedInt(d.Count);
        
B>            foreach(var i in d)
B>            {
B>                Serialize(writer, /* нужно из i достать значение Key */, type.GenericTypeArguments[0]);
B>                Serialize(writer, /* нужно из i достать значение Value */, type.GenericTypeArguments[1])
B>            }
B>        }
B>    }
B>


i в твоем случае — это DictionaryEnrty, который объявлен примерно так:
public struct DictionaryEntry
{
    public object Key { get; set; }
    public object? Value { get; set; }
}


https://learn.microsoft.com/en-us/dotnet/api/system.collections.dictionaryentry?view=net-9.0

Ну и в догонку, IDictionary необязательно представляет собой IDictionary<TKey, TValue>
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.