public void ZapiszJakoXml(XmlWriter writer) { writer.WriteStartElement(GetType().FullName); foreach (PropertyInfo właściwość in GetType().GetProperties().OrderBy(w => w.Name)) { Type typWłaściwości = właściwość.PropertyType; object wartośćWłaściwości = właściwość.GetValue(this); if (wartośćWłaściwości != null) { writer.WriteStartElement(właściwość.Name); if (właściwość.GetSetMethod() == null) { if (typWłaściwości == typeof(WartośćWewnętrznegoKlockaZwracającegoWartość)) { WartośćWewnętrznegoKlockaZwracającegoWartość wartość = (WartośćWewnętrznegoKlockaZwracającegoWartość)wartośćWłaściwości; wartość[0]?.ZapiszJakoXml(writer); } else if (typWłaściwości == typeof(ZawartośćKlockaPionowegoZZawartością)) { ZawartośćKlockaPionowegoZZawartością zawartość = (ZawartośćKlockaPionowegoZZawartością)wartośćWłaściwości; foreach (KlocekPionowy klocekPionowy in zawartość) { klocekPionowy.ZapiszJakoXml(writer); } } } else { if (typWłaściwości == typeof(KlocekPionowyZZawartością)) { } else if (typWłaściwości == typeof(Semafor)) { } else if (typWłaściwości == typeof(WartośćWewnętrznegoKlockaZwracającegoWartość)) { } else if (typWłaściwości == typeof(Zmienna)) { Zmienna zmienna = (Zmienna)wartośćWłaściwości; writer.WriteString(zmienna.Nazwa); } else { writer.WriteString(wartośćWłaściwości.ToString()); } } writer.WriteEndElement(); } } writer.WriteEndElement(); }
public virtual object Clone() { Type typKlocka = GetType(); object kopia = Activator.CreateInstance(typKlocka); foreach (PropertyInfo właściwość in typKlocka.GetProperties().Where(w => w.PropertyType == typeof(WartośćWewnętrznegoKlockaZwracającegoWartość))) { WartośćWewnętrznegoKlockaZwracającegoWartość wartość = (WartośćWewnętrznegoKlockaZwracającegoWartość)właściwość.GetValue(this); WartośćWewnętrznegoKlockaZwracającegoWartość kopiaWartości = (WartośćWewnętrznegoKlockaZwracającegoWartość)właściwość.GetValue(kopia); if ((wartość != null) && (kopiaWartości != null)) { KlocekZwracającyWartość klocekZwracającyWartość = wartość[0]; if (klocekZwracającyWartość != null) { KlocekZwracającyWartość kopiaKlockaZwracającegoWartość = (KlocekZwracającyWartość)klocekZwracającyWartość.Clone(); kopiaKlockaZwracającegoWartość.MiejsceUmieszczenia = kopiaWartości; kopiaWartości[0] = kopiaKlockaZwracającegoWartość; } } } return(kopia); }
public void PrzeczytajZXml(XElement elementXml, Konsola konsola, Semafor semafor, ObservableCollection <Zmienna> zmienne) { foreach (PropertyInfo właściwość in GetType().GetProperties()) { Type typWłaściwości = właściwość.PropertyType; XElement węzełWłaściwości = elementXml.Element(właściwość.Name); if ((węzełWłaściwości != null) && !węzełWłaściwości.IsEmpty) { if (właściwość.GetSetMethod() == null) { if (typWłaściwości == typeof(WartośćWewnętrznegoKlockaZwracającegoWartość)) { XElement węzełWartości = węzełWłaściwości.Elements().Single(); Type typKlockaZwracającegoWartość = Type.GetType(węzełWartości.Name.LocalName); if (typKlockaZwracającegoWartość != null) { KlocekZwracającyWartość klocekZwracającyWartość = (KlocekZwracającyWartość)Activator.CreateInstance(typKlockaZwracającegoWartość); WartośćWewnętrznegoKlockaZwracającegoWartość wartość = (WartośćWewnętrznegoKlockaZwracającegoWartość)właściwość.GetValue(this); klocekZwracającyWartość.MiejsceUmieszczenia = wartość; wartość[0] = klocekZwracającyWartość; klocekZwracającyWartość.PrzeczytajZXml(węzełWartości, konsola, semafor, zmienne); } } else if (typWłaściwości == typeof(ZawartośćKlockaPionowegoZZawartością)) { foreach (XElement węzełKlockaPionowego in węzełWłaściwości.Elements()) { Type typKlockaPionowego = Type.GetType(węzełKlockaPionowego.Name.LocalName); if (typKlockaPionowego != null) { KlocekPionowy klocekPionowy = (KlocekPionowy)Activator.CreateInstance(typKlockaPionowego); klocekPionowy.Rodzic = (KlocekPionowyZZawartością)this; ZawartośćKlockaPionowegoZZawartością zawartość = (ZawartośćKlockaPionowegoZZawartością)właściwość.GetValue(this); klocekPionowy.PrzeczytajZXml(węzełKlockaPionowego, konsola, semafor, zmienne); zawartość.Add(klocekPionowy); } } } } else { if (typWłaściwości == typeof(KlocekPionowyZZawartością)) { } else if (typWłaściwości == typeof(Konsola)) { właściwość.SetValue(this, konsola); } else if (typWłaściwości == typeof(Semafor)) { właściwość.SetValue(this, semafor); } else if (typWłaściwości == typeof(WartośćWewnętrznegoKlockaZwracającegoWartość)) { } else if (typWłaściwości == typeof(Zmienna)) { właściwość.SetValue(this, zmienne.Single(z => z.Nazwa == węzełWłaściwości.Value)); } else if ((typWłaściwości == typeof(bool)) || (typWłaściwości == typeof(double)) || (typWłaściwości == typeof(string))) { właściwość.SetValue(this, Convert.ChangeType(węzełWłaściwości.Value, typWłaściwości)); } else { Type typOpcji = Type.GetType(węzełWłaściwości.Value); if (typOpcji != null) { właściwość.SetValue(this, Activator.CreateInstance(typOpcji)); } } } } } }
protected KlocekPionowyPrzyjmującyWartość(Type przyjmowanyTyp) { Wartość = new WartośćWewnętrznegoKlockaZwracającegoWartość(przyjmowanyTyp); }