Autor Beitrag
C#
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 561
Erhaltene Danke: 65

Windows 10, Kubuntu, Android
Visual Studio 2017, C#, C++/CLI, C++/CX, C++, F#, R, Python
BeitragVerfasst: Mi 25.01.12 22:04 
Hey Leute,

Ich habe vor kurzem schon mal das Problem in einem anderen Thread gehabt, dass ich meine Klasse nicht Serialisieren kann: Fehler bei Reflektion.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
    public class DataFile
    {
        public DataFile()
        {
            Users = new List<User>();
            Files = new List<FileInfo>();
        }

        public string FilePath;
        public string Password;
        public int TextColorArgb;
        public string Name;
        public List<User> Users;
        public List<FileInfo> Files;
        public bool Autorun;
    }

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
public void SaveData()
        {
            XmlSerializer serializer = new XmlSerializer(typeof(DataFile), new[] { typeof(FileInfo), typeof(UserData) });
            XmlWriterSettings settings = new XmlWriterSettings
            {
                Indent = true,
                IndentChars = "\t"
            };
            XmlWriter writer = XmlWriter.Create("Data.xml", settings);
            serializer.Serialize(writer, this);
            writer.Close();
        }


weiß jemand wo zum Teufel jetzt das Problem liegt?

_________________
Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 25.01.12 22:16 
Ist FileInfo die Klasse aus dem Framework (die aus System.IO)? Dann ist die nicht serialisierbar weil die keinen Standard Konstruktor hat.

Andere Klasse aber absolut gleiches Problem wie in dem anderen Thread. Da du das Problem schon kanntest sollte es eigentlich für dich nicht zu schwer sein das für die beteiligten Klassen in der Doku nachzusehen.
C# Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 561
Erhaltene Danke: 65

Windows 10, Kubuntu, Android
Visual Studio 2017, C#, C++/CLI, C++/CX, C++, F#, R, Python
BeitragVerfasst: Mi 25.01.12 22:20 
Nein FileInfo ist hier eine eigene Klasse.
Natürlich.
In diesem Moment fällt mir der Fehler ein xD. Meine User Klasse ist von TcpClient abgeleitet. Dafür muss ich die Klasse UserInfo nehmen xD.
Die hab ich nämlich extra dafür gemacht...
*Peinlich*
:autsch: :autsch: :autsch:

_________________
Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 25.01.12 22:24 
In dem Fall, wenn du dich einfach nur Blöd angestelt hast ;), ziehe ich die angedeutete RTFM Kritik in meinem letzten Satz zurück.
C# Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 561
Erhaltene Danke: 65

Windows 10, Kubuntu, Android
Visual Studio 2017, C#, C++/CLI, C++/CX, C++, F#, R, Python
BeitragVerfasst: Mi 25.01.12 22:33 
danke ;)
oh man und bei der serializer deklaration steht auch noch typeof(UserData)...
:autsch:

_________________
Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Do 26.01.12 00:03 
Man merke: Nenne eine Klasse, die mit Netzwerkprotokollen umgehen kann, nicht User, sondern z.B. UserDataProvider. User sieht nämlich tatsächlich nach einem Objekt aus, das Daten speichert und vielleicht Informationen geben kann, nicht aber nach einem, das selbstständig kommunizieren kann. Überhaupt ist es an dieser Stelle nicht unbedingt sinnvoll, von TcpClient abzuleiten, da ein Benutzer im Normalfall keine Spezialisierung eines Tcp-Clients darstellt. Wenn überhaupt, sollte er einen TcpClient verwenden.

Soviel zu Softwaredesign. Hab bisher allerdings weder kommerziell gearbeitet, noch mit dem Studium begonnen. Also alles ohne Gewähr :mrgreen: