Ich konvertiere derzeit unsere .net Business-Objekte Bibliothek in eine PCL-Datei, so dass es mit Xamarin IOS/Android verwendet werden kann und während es hauptsächlich POCO-Objekte enthält, enthält es auch benutzerdefinierte Ausnahmen, aber das ist Wurffehler.Benutzerdefinierte Ausnahmen in PCL-Dateien
eine typische Angepasste Exception Nehmen:
[Serializable]
public class EncryptKeyNotFoundException : Exception
{
public EncryptKeyNotFoundException()
: base() { }
public EncryptKeyNotFoundException(string message)
: base(message) { }
public EncryptKeyNotFoundException(string format, params object[] args)
: base(string.Format(format, args)) { }
public EncryptKeyNotFoundException(string message, Exception innerException)
: base(message, innerException) { }
public EncryptKeyNotFoundException(string format, Exception innerException, params object[] args)
: base(string.Format(format, args), innerException) { }
protected EncryptKeyNotFoundException(SerializationInfo info, StreamingContext context)
: base(info, context) { }
}
Da die PCL nicht [Serializable]
und SerializationInfo
erwartet mag. Während ich mit dem Festhalten von [DataContract] statt [Serialiable]
davonkommen könnte, wird das Problem mit SerializationInfo
immer noch nicht gelöst.
Gibt es trotzdem eine Umgehung dieses Problems?
Danke.
Update:
Ich habe einen Blick auf Implementing custom exceptions in a Portable Class Library hatte, wie vorgeschlagen, aber die folgenden zwei Attribute nicht erkannt werden:
[ClassInterfaceAttribute(ClassInterfaceType.None)]
[ComVisibleAttribute(true)]
Ich muss aber einen Verweis fehlt, auf die Montage?
suche ich zur Zeit an einer alternativen Lösung als Portable class library: recommended replacement for [Serializable]
in bereitgestellt Hoffentlich funktioniert. Ich werde meine Antwort aktualisieren, sobald ich weitere Informationen zur Verfügung habe.
Update:
ClassInterfaceAttribute
Teil der System.RunTime.InteroServices ist, aber ich kann das mein PCL Projekt nicht hinzufügen, gut zumindest nicht sichtbar ist. 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 so dass [Serializable]
keinen Fehler wirft, aber ich bin nicht in der Lage, dies zu tun.
Eines, was ich versucht habe, ist einfach auf Kommentar:
protected EncryptKeyNotFoundException(SerializationInfo info,
StreamingContext context) : base(info, context) { }
Und ich kann mein pcl Projekt ok kompilieren, so die Frage ist, kann ich dies tun müssen?
Danke.
Ich denke, das ist hilfreich für Sie [Implementieren von benutzerdefinierten Ausnahmen in einer Portable Class Library] (http://stackoverflow.com/questions/13604713/implementing-custom-exceptions-in-a-portable-class-library) –
Ich hatte diesen Artikel gefunden, fand ihn aber nicht relevant. Ich werde es versuchen und aktualisieren, wenn Sie fertig sind. Vielen Dank. – Thierry
Ich habe meine Antwort aktualisiert, aber leider hilft es nicht. Fehle ich etwas? – Thierry