--- /dev/null
+//\r
+// System.Runtime.Serialization.ISurrogateSelector\r
+//\r
+// Author:\r
+// David Dawkins (david@dawkins.st)\r
+//\r
+// (C) David Dawkins\r
+//\r
+\r
+namespace System.Runtime.Serialization {\r
+\r
+ /// <summary>\r
+ /// Creation of serialization surrogate selectors</summary>\r
+ public interface ISurrogateSelector {\r
+\r
+ /// <summary>\r
+ /// Insert specified selector into available surrogates</summary>\r
+ void ChainSelector( ISurrogateSelector selector );\r
+\r
+ /// <summary>\r
+ /// Return next surrogate in the surrogate chain</summary>\r
+ ISurrogateSelector GetNextSelector();\r
+\r
+ /// <summary>\r
+ /// Fetch the surrogate according the specified type, starting\r
+ /// the search from the surrogate selector for the specified\r
+ /// StreamingContext</summary>\r
+ /// <param name="type">Type of the object to be serialized</param>\r
+ /// <param name="context">Context for the serialization/deserialization</para,>\r
+ /// <param name="selector">Upon return, contains a reference to the selector where the returned surrogate was found</param>\r
+ /// <returns>The surrogate for the specified type and context</returns>\r
+ ISerializationSurrogate GetSurrogate(\r
+ Type type,\r
+ StreamingContext context,\r
+ out ISurrogateSelector selector\r
+ );\r
+\r
+ }\r
+\r
+}\r