示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#4
0
        public static ISerializationSurrogateProvider GetSerializationSurrogateProvider(this DataContractSerializer serializer)
        {
            SurrogateProviderAdapter adapter = serializer.DataContractSurrogate as SurrogateProviderAdapter;

            return(adapter?.Provider);
        }