Stworzyłem niewizualny komponent w języku C#, który został zaprojektowany jako symbol zastępczy metadanych w formularzu.
Komponent ma właściwość, która jest zbiorem niestandardowych obiektów, ten obiekt jest oznaczony jako Serializowalny i implementuje GetObjectData do serwilizowania i publicznego elementu do deziletyzacji.
Serializacja czasu projektowania w C#
W pliku Resx formularza wygeneruje dane binarne do przechowywania kolekcji, jednak za każdym razem, gdy dokonam zmiany w klasie zserializowanej, otrzymuję błędy projektanta i muszę ręcznie usunąć dane z pliku resx i następnie odtwórz te dane.
Próbowałem zmieniając constuctor mieć blok try/catch wokół każdego obiektu w klasie
try
{
_Name = info.GetString("Name");
}
catch (SerializationException)
{
this._Name = string.Empty;
}
ale ciągle wywala. Ostatnim błędem, jaki dostałem, było to, że musiałem wdrożyć IConvertible.
Wolałbym korzystać z serializacji xml, ponieważ mogę ją przynajmniej zobaczyć, czy jest to możliwe do wykorzystania przez projektanta?
Czy istnieje sposób na uczynienie serializacji bardziej stabilną i mniej odporną na zmiany?
Edit:
Więcej informacji ... lepszy opis może
Mam klasy, która dziedziczy z Component, ma jedną właściwość, która jest zbiorem reguł. Wydaje się, że RulesCollection jest oznaczony jako Serializable, w przeciwnym razie nie zachowa swoich członków.
Klasa Reguły jest również składnikiem z atrybutem DesignTimeVisible (false), aby zatrzymać go w zasobniku komponentu, to nie jest oznaczone Serializable.
Posiadanie kolekcji oznaczonej jako Serializable generuje dane binarne w pliku resx (nie jest to idealne), a raport IDE informuje, że klasa Reguły nie jest możliwa do Serializacji.
Myślę, że ten problem wykracza poza proste pytanie. Prawdopodobnie wkrótce to zakończę.
Jeśli ktoś ma jakieś linki do czegoś podobnego, które bardzo by pomogło.
Wydaje się, że metoda ta daje również binarnych danych odcinkach, plus każdy obiekt w kolekcji jest reprezentowany na tacy składnika – benPearce
zapobiec pojawiające się w zasobniku przy użyciu ... [ToolboxItem (false)] ... na klasa. Używam tego podejścia przez cały czas i nie otrzymuję danych binarnych. Musisz więc robić coś, co zmusza do tego. Czy możesz opublikować fragment kodu? –