KGy SOFT

NameInvariantSurrogateSelector Class

KGy SOFT Core Libraries Help
An ISurrogateSelector implementation that makes possible to serialize and deserialize objects by IFormatters without storing field names. This provides compatibility for obfuscated and non-obfuscated versions of an assembly.
See the Remarks section for details.
Inheritance Hierarchy

SystemObject
  KGySoft.SerializationNameInvariantSurrogateSelector

Namespace:  KGySoft.Serialization
Assembly:  KGySoft.CoreLibraries (in KGySoft.CoreLibraries.dll) Version: 5.0.0-alpha.1
Syntax

public class NameInvariantSurrogateSelector : ISurrogateSelector, 
	ISerializationSurrogate

The NameInvariantSurrogateSelector type exposes the following members.

Constructors

  NameDescription
Public methodNameInvariantSurrogateSelector
Initializes a new instance of the NameInvariantSurrogateSelector class
Top
Methods

  NameDescription
Public methodChainSelector
Specifies the next ISurrogateSelector for surrogates to examine if the current instance does not have a surrogate for the specified type and assembly in the specified context.
Public methodEquals
Determines whether the specified object is equal to the current object.
(Inherited from Object.)
Protected methodFinalize
Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object.)
Public methodGetHashCode
Serves as the default hash function.
(Inherited from Object.)
Public methodGetNextSelector
Returns the next surrogate selector in the chain.
Public methodGetSurrogate
Finds the surrogate that represents the specified object's type, starting with the specified surrogate selector for the specified serialization context.
Public methodGetType
Gets the Type of the current instance.
(Inherited from Object.)
Protected methodMemberwiseClone
Creates a shallow copy of the current Object.
(Inherited from Object.)
Public methodToString
Returns a string that represents the current object.
(Inherited from Object.)
Top
Extension Methods

  NameDescription
Public Extension MethodConvert(Type, CultureInfo)Overloaded.
Converts an Object specified in the obj parameter to the desired targetType.
See the Examples section of the generic ConvertTTarget(Object, CultureInfo) overload for an example.
(Defined by ObjectExtensions.)
Public Extension MethodCode exampleConvertTTarget(CultureInfo)Overloaded.
Converts an Object specified in the obj parameter to the desired TTarget.
(Defined by ObjectExtensions.)
Public Extension MethodIn (Defined by ObjectExtensions.)
Public Extension MethodTryConvert(Type, Object)Overloaded.
Tries to convert an Object specified in the obj parameter to the desired targetType.
(Defined by ObjectExtensions.)
Public Extension MethodTryConvert(Type, CultureInfo, Object)Overloaded.
Tries to convert an Object specified in the obj parameter to the desired targetType.
(Defined by ObjectExtensions.)
Public Extension MethodTryConvertTTarget(TTarget)Overloaded.
Tries to convert an Object specified in the obj parameter to the desired TTarget.
See the Examples section of the ConvertTTarget(Object, CultureInfo) method for a related example.
(Defined by ObjectExtensions.)
Public Extension MethodTryConvertTTarget(CultureInfo, TTarget)Overloaded.
Tries to convert an Object specified in the obj parameter to the desired TTarget.
See the Examples section of the ConvertTTarget(Object, CultureInfo) method for a related example.
(Defined by ObjectExtensions.)
Top
Remarks

You can use this surrogate selector for any non-primitive types that does not implement ISerializable interface.
Note Note
Versioning by this surrogate selector can be accomplished only if new fields are always defined after the old ones on every level of the hierarchy. You might to use also WeakAssemblySerializationBinder to ignore version information of assemblies on deserialization.
Caution note Caution
Please note that this surrogate selector does not identify field names on deserialization so reordering members may corrupt or fail deserialization.
See Also

Reference