Just come across something I haven't needed before, a property read-only from the outside, but writeable from the inside.. I present to you the private set property!
public SocketException LastErrorException { get; private set; }
You can set it from within the class, but not from outside. Simple!