У меня есть модели, которые используются для сериализации данных в XML.
Ex
public class File : IFile
{
[XmlAttribute]
public string ObjectId;
public string OriginalFileName { get; set; }
public string FileName { get; set; }
public int Size { get; set; }
public string Note { get; set; }
public static explicit operator File(FileItem a) // explicit File to FileItem conversion operator
{
File b = new File(); // explicit conversion
b.ObjectId = a.ObjectId;
b.Note = a.Note;
b.FileName = a.FileName;
b.OriginalFileName = a.OriginalFileName;
b.Size = a.Size;
return b;
}
}
Эти классы в основном используются для чтения и сохранения XML-документов внутри документа Word.
Внутри основного приложения мне нужны данные, чтобы их можно было наблюдать, поэтому в этом случае я использую призму, а классы наследуются от объекта Notificationobject.
Ex
public class FileItem : NotificationObject, IFile
{
public FileItem()
{
}
public static explicit operator FileItem(File a) // explicit File to FileItem conversion operator
{
FileItem d = new FileItem(); // explicit conversion
d.ObjectId = a.ObjectId;
d.Note = a.Note;
d.FileName = a.FileName;
d.OriginalFileName = a.OriginalFileName;
d.Size = a.Size;
return d;
}
private string _objectid;
public string ObjectId
{
get { return _objectid; }
set
{
if (!value.Equals(_objectid))
{
_objectid = value;
this.RaisePropertyChanged(() => this.ObjectId);
}
.................
Итак, я сначала читаю xml-файлы в классе File, а затем мне нужно преобразовать его в класс FileItem, а когда я хочу сохранить его обратно в xml, мне нужно снова выполнить обратное преобразование. Это кажется немного ненужным для меня. Я мог бы подумать о решении, где я сериализую непосредственно в FileItem, но мне нужно, чтобы File был простым, поскольку он определен в сборке, которая используется другими компонентами, которым не требуется объект уведомления, и где сборки призмы не будут установлены.
Любые идеи о том, как это упростить.