public static void SetSerializationSurrogateProvider(this DataContractSerializer serializer, ISerializationSurrogateProvider provider) { // allocate every time, expectation is that this won't happen enough to warrant maintaining a CondtionalWeakTable. IDataContractSurrogate adapter = new SurrogateProviderAdapter(provider); serializer.SetDataContractSurrogate(adapter); }
public static void SetSerializationSurrogateProvider(this DataContractSerializer serializer, ISerializationSurrogateProvider provider) { // allocate every time, expectation is that this won't happen enough to warrant maintaining a CondtionalWeakTable. IDataContractSurrogate adapter = new SurrogateProviderAdapter(provider); // DCS doesn't expose a setter, access the field directly as a workaround typeof(DataContractSerializer) .GetField("dataContractSurrogate", BindingFlags.Instance | BindingFlags.NonPublic) .SetValue(serializer, adapter); }
public static void SetSerializationSurrogateProvider(this DataContractSerializer serializer, ISerializationSurrogateProvider provider) { // allocate every time, expectation is that this won't happen enough to warrant maintaining a CondtionalWeakTable. IDataContractSurrogate adapter = new SurrogateProviderAdapter(provider); // DCS doesn't expose a setter, access the field directly as a workaround typeof(DataContractSerializer) .GetField("dataContractSurrogate", BindingFlags.Instance | BindingFlags.NonPublic) .SetValue(serializer, adapter); }
public static ISerializationSurrogateProvider GetSerializationSurrogateProvider(this DataContractSerializer serializer) { SurrogateProviderAdapter adapter = serializer.DataContractSurrogate as SurrogateProviderAdapter; return(adapter?.Provider); }