Serialize(BinaryWriter writer, object val, Type type)
{
if(val is IDictionary d)
{
writer.Write7BitEncodedInt(d.Count);
foreach(var i in d)
{
Serialize(writer, /* нужно из i достать значение Key */, type.GenericTypeArguments[0]);
Serialize(writer, /* нужно из i достать значение Value */, type.GenericTypeArguments[1])
}
}
}
Я изъездил эту страну вдоль и поперек, общался с умнейшими людьми и я могу вам ручаться в том, что обработка данных является лишь причудой, мода на которую продержится не более года. (с) Эксперт, авторитет и профессионал из 1957 г.
Здравствуйте, 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>>