Я пытаюсь создать базовый класс, в котором я могу наследовать его (чтобы добавить свойства к производным классам) и использовать методы Load и Save из базового класса. Я снова и снова пишу «Загрузить и сохранить» и хочу применить к нему СУХУЮ ...
namespace Common
{
using System;
using System.IO;
using System.Xml.Serialization;
public abstract class ApplicationSettings
{
protected ApplicationSettings()
{
}
public static ApplicationSettings Load(string fileName)
{
if (!File.Exists(fileName))
{
return null;
}
XmlSerializer serializer = new XmlSerializer(typeof(ApplicationSettings));
using (StreamReader reader = new StreamReader(fileName))
{
ApplicationSettings param = (ApplicationSettings)serializer.Deserialize(reader);
reader.Close();
return param;
}
}
public void Save(string fileName)
{
XmlSerializer serializer = new XmlSerializer(typeof(ApplicationSettings));
using (StreamWriter writer = new StreamWriter(fileName))
{
serializer.Serialize(writer, this);
writer.Close();
}
}
}
}
Учитывая этот абстрактный класс, я затем хочу получить класс, такой как:
namespace Common
{
using System;
public class ApplicationParameters : ApplicationSettings
{
public ApplicationParameters()
{
}
public string AuthorizationCode
{
get;
set;
}
public string ReferenceNumber
{
get;
set;
}
}
}
Для класса Derived я должен быть в состоянии сделать что-то вроде
Параметры ApplicationParameters =
ApplicationParmeters.Load ( "settings.xml");
Однако в приведенной выше реализации возникает ошибка компилятора, когда я пытаюсь привести ApplicationSettings к классу ApplicationParameters, когда я вызываю метод Load в базовом классе.
Есть ли способ сделать это?