Поскольку я не нашел лучшего способа обработки своей конфигурации, я использовал XmlSerializer для сериализации словаря (объясним позже), содержащего все, что я хочу сохранить.Теперь, когда я стал хитрее, я начал создавать более сложные типы данных.Единственная проблема заключается в том, что теперь, когда я сериализую объект, он выдает ошибку, потому что это не примитивный тип данных.Если я создаю новый сериализатор для каждого значения, я не могу загрузить объект обратно.Есть ли простой способ обойти это?Или простая библиотека для сохранения и загрузки любого типа данных.
Сериализуемый словарь.Я использую <string,object>
для <T,S>
public void ReadXml (System.Xml.XmlReader reader)
{
try {
XmlSerializer deserializerKeys = new XmlSerializer( typeof(T) );
XmlSerializer deserializerValues = new XmlSerializer( typeof(S) );
reader.Read();
while (true) {
T key = (T)deserializerKeys.Deserialize(reader);
S val = (S)deserializerValues.Deserialize(reader); // fail :(
this.Add( key, val );
}
} catch ( Exception e ) {
Console.WriteLine( e.Message );
Console.WriteLine( e.StackTrace );
}
}
public void WriteXml (System.Xml.XmlWriter writer)
{
// ONE OF THE serializerValues is always commented out
// Im just showing the two ways I have done this
XmlSerializer serializerKeys = new XmlSerializer( typeof( T ) );
// this works for loading but not for saving >.>
XmlSerializer serializerValues = new XmlSerializer( typeof( S ) );
foreach ( KeyValuePair<T,S> pair in this ) {
// this way works with the saving but fails with loading
XmlSerializer serializerValues = new XmlSerializer(pair.Value.GetType());
serializerKeys.Serialize( writer, pair.Key );
serializerValues.Serialize( writer, pair.Value );
}
}
Затем у меня есть другой класс, производный от List<SimpleRegex>
, он содержит все объекты SimpleRegex
и "выделенное регулярное выражение".SimpleRegex
- это просто класс, который содержит более простой синтаксис регулярных выражений и предоставляет те же методы, что и обычные регулярные выражения (сопоставление, замена и т. Д.).Таким образом, нормальные люди могут использовать это.Это RegexCollection
(List<SimpleRegex>
) не примитивно.Это моя проблема.По сути, все, что я хочу сделать, это сохранить и загрузить любой тип данных.