I have an interface that defines some methods I would like certain classes to implement.
public interface IMyInterface { MethodA; MethodB; }
Additionally I would like all classes implementing this interface to be serializable. If I change the interface definition to implement ISerializable as below…:
public interface IMyInterface : ISerializable { MethodA; MethodB; }
…all classes must now explicitly implement serialization as far as I am aware, since if you implement ISerializable you must implement the GetObjectData member (and the necessary constructor to deserialize).
How can I insist classes using my interface be serializable, but without forcing them to custom implement serialization?
Thanks,
Will
Best Solution
There does not seem to be a way to do this, but I wish there were.
Note two things though:
The Serializable attribute can not be inherited from a base class, even if the base class is marked as abstract.
You don't technically need the Serializable attribute, IF you are using an XmlSerializer because it does not make use of object graphs.