Я выполняю некоторую работу по вводу-выводу в C # и хочу импортировать / экспортировать данные из нескольких классов.Через некоторое время кажется, что сериализация довольно близка к тому, что я хочу.
Однако есть проблема.У меня есть XML-файл, который описывает членов определенного класса (который я буду называть ValueWithId
), которые объединены в класс, который я буду называть CollectionOfValuesWithId
для целей этого вопроса.
ValueWithId
- это класс, который содержит string
член с именем ShortName
, который является уникальным.Существует только один ShortName
на ValueWithId
, и все ValueWithId
имеют ненулевое значение ShortName
.CollectionOfValuesWithId
содержит функцию для поиска ValueWithId
с заданным ShortName
.
При сериализации я NOT хочу сохранить ValueWithId
или CollectionOfValuesWithId
в выходных данныхфайл.Вместо этого я просто хочу сохранить ShortName
в файле.Все идет нормально.Мне просто нужно использовать SerializationInfo.AddValue("ValueWithId", MyValueWIthId.ShortName)
.
Проблема заключается в десериализации.Некоторые специалисты по поиску в Google предполагают, что для чтения данных из файла можно сделать следующее:
public SomeClassThatUsesValueWithId(SerializationInfo info, StreamingContext ctxt)
{
string name = (string)info.GetValue("ValueWithId", typeof(string));
}
Однако строки недостаточно для восстановления экземпляра ValueWithId
.Мне также нужно CollectionOfValuesWithId
.Я хочу что-то вроде этого:
public SomeClassThatUsesValueWithId(SerializationInfo info,
StreamingContext ctxt, CollectionOfValuesWithId extraParameter)
Другими словами, мне нужно передать дополнительные данные в конструктор десериализации.Кто-нибудь знает какой-либо способ сделать это или какие-либо альтернативы?