Found this at:
4.1.4 Considerations for Assemblies That Contain User-Defined Types
The following limitations apply to common language runtime (CLR) assemblies that contain user-defined types. Common Language Runtime User-Defined Types Should Have Only One Serialization Each instance of a byte-ordered user-defined type object can have only one serialized representation. If the serialize or de-serialize routines recognize more than one representation of a particular object, you may see errors in the following cases: • During validation of a byte-ordered user-defined type passed through RPC, user-defined type validation performs de-serialization/re-serialization of the user-defined type and requires that the resulting bytes be exactly the same as the original. If the validation fails, you will see the error:
"System.Data.SqlClient.SqlException, Incoming TDS RPC protocol stream is incorrect. Parameter 1 ("<ParameterName>"): The supplied value is not a valid instance of data type <TypeName>. Check the source data for invalid values."