Implementing custom exceptions in a Portable Class Library

.net, c#, exception, portable-class-library, windows-store-apps

Solution

Basically, ignore that guidance - that is for full .NET, and does not apply to portable class library projects. Indeed, if we look at (say) Silverlight (which includes WP7) we see:

[ClassInterfaceAttribute(ClassInterfaceType.None)]
[ComVisibleAttribute(true)]
public class Exception

Frankly, the main consumer of that requirement was remoting... and that is not in huge demand now.

Problem

When designing custom exceptions for .NET, MSDN provides these guidelines. In particular, the guidelines state that a custom exception: - should be serializable, i.e. implement `ISerializable` and be decorated with the `[Serializable]` attribute, and - should implement the (de)serialization constructor, i.e. `protected CustomException(SerializationInfo info, StreamingContext context)`. However, in a Portable Class Library neither of `SerializableAttribute`, `ISerializable` and `SerializationInfo` are supported. How should I sufficiently design a custom exception in a Portable Class Library that simultaneously targets .NET Framework and one or more platforms?

Original source