Benutzerdefinierte Ausnahmen in PCL-Dateien

9

Ich konvertiere gerade unsere .net Business-Objektbibliothek in eine PCL-Datei, so dass sie mit Xamarin IOS / Android verwendet werden kann und obwohl sie hauptsächlich POCO-Objekte enthält, enthält sie auch benutzerdefinierte Ausnahmen, aber das wirft Fehler.

Nehmen Sie eine typische benutzerdefinierte Ausnahme:

%Vor%

Wie erwartet, gefällt die PCL nicht [Serializable] und SerializationInfo . Während ich mit dem Festhalten von [DataContract] fortfahren kann, anstatt [Serialiable] zu verwenden, wird das Problem mit SerializationInfo dennoch nicht gelöst.

Gibt es das Problem irgendwie zu umgehen?

Danke.

Aktualisierung:

Ich habe mir die Implementierung von benutzerdefinierten Ausnahmen in einem Portable angesehen Klassenbibliothek wie vorgeschlagen, aber die folgenden 2 Attribute werden nicht erkannt:

%Vor%

Ich muss eine Referenz, aber zu welcher Baugruppe fehlen?

Ich schaue mir gerade eine alternative Lösung an, wie sie in Portable class library bereitgestellt wird : Empfohlener Ersatz für [Serializable]

Hoffentlich wird das funktionieren. Ich werde meine Antwort aktualisieren, sobald ich weitere Informationen zur Verfügung habe.

Aktualisierung:

ClassInterfaceAttribute ist Teil von System.RunTime.InteroServices, aber ich kann das nicht zu meinem PCL-Projekt hinzufügen, zumindest ist es nicht sichtbar. Fehle ich etwas?

Der andere Artikel liefert zusätzliche Informationen und es sieht so aus, als ob bei der bedingten Kompilierung das funktioniert, aber während der Beispielcode aus der json-Bibliothek zu funktionieren scheint, muss mir etwas fehlen, da ich keine Referenz hinzufügen kann Das [Serializable] wirft keinen Fehler, aber ich scheine das nicht zu tun.

Eine Sache, die ich versucht habe, ist einfach auskommentieren:

%Vor%

Und ich kann mein PCL-Projekt ok kompilieren, also ist die Frage, ob ich das brauche?

Danke.

    
Thierry 19.08.2015, 12:59
quelle

1 Antwort

1

Ich denke, Sie haben die Antwort im vorgeschlagenen Link falsch interpretiert. Sie müssen ClassInterfaceAttribute oder ComVisibleAttribute in Ihrer benutzerdefinierten Ausnahmeregelung nicht hinzufügen. Wenn wir in Exception-Klasse für .NET Framework suchen siehe:

%Vor%

und unter Exception-Klasse für Silverlight , dies

%Vor%

SerializableAttribute ist nicht verfügbar.

Ein weiterer Unterschied ist, dass die Exception-Klasse für Silverlight nur 3 Konstruktoren hat. Konstruktor Exception(SerializationInfo, StreamingContext) ist nicht verfügbar. Und außerdem können wir unten in Screenshot der benutzerdefinierten Ausnahmeimplementierung in PCL-Bibliothek sehen, dass nur 3 Konstruktoren für Ausnahme verfügbar sind. Es gibt keinen solchen Konstruktor, den Sie erstellen möchten:

%Vor%

Also, in PCL benutzerdefinierte Ausnahme Implementierung mit DataContract statt Serializable, wäre etwas wie folgt:

%Vor%     
Mukesh Modhvadiya 28.08.2015, 13:05
quelle