Hallo Bunnychecker,
sofern der Autor der Basisklasse das SerializableAttribute nicht aus Versehen weggelassen hat, hat es normalerweise seinen Sinn, wenn eine Klasse (insbesondere eine aus dem .NET Framework) nicht als [Serializable] gekennzeichnet ist. Beim WebClient finde ich es offensichtlich, denn wie sollte die geöffnete Verbindung serialisiert und beim Deserialisieren wiederhergestellt werden? Vielleicht nicht vollkommen undenkbar, aber in der Praxis meistens unmöglich.
Wenn du ein Objekt einer Unterklasse einer nicht serialisierbaren Oberklasse serialisieren willst, ist normalerweise irgendwas im Entwurf faul oder man macht irgendeinen Denkfehler. Als erstes solltest du prüfen, ob überhaupt eine IST-EIN-Beziehung zwischen Unterklasse und Oberklasse besteht. Meistens reicht es, wenn man sich fragt, ob der Satz "jede/s/r KlasseA ist ein/e KlasseB" Sinn macht, wenn man für KlasseA den Namen der Unterklasse und für KlasseB den Namen der Oberklasse einsetzt.
Wenn das nicht der Fall ist, sollte man sich fragen ob stattdessen der Satz "jede/s/r KlasseA hat ein/e/n KlasseB" Sinn macht. Wenn ja, dann sollte KlasseA ein Objekt der KlassseB als privates Feld oder (öffentliche) Property enthalten, das/die als [NonSerialized] gekennzeichnet ist.
Das alles gilt für binäre Serialisierung. Für XML-Serialisierung gelten die genannten Attribute nicht. Zu den Unterschieden siehe
Untersch. Behandlung der Objektdaten bzgl. Modifizierer bei Serialisierung in den versch. Formaten. Was aus den Unterschieden für den konkreten Fall resultiert, kann man sich leicht selbst überlegen.
herbivore