Formatter.cs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. //
  2. // System.Runtime.Serialization.Formatter.cs
  3. //
  4. // Duncan Mak ([email protected])
  5. //
  6. // (C) Ximian, Inc.
  7. //
  8. using System;
  9. using System.Collections;
  10. using System.IO;
  11. namespace System.Runtime.Serialization
  12. {
  13. [CLSCompliant (false)]
  14. [Serializable]
  15. public abstract class Formatter : IFormatter
  16. {
  17. protected Formatter ()
  18. {
  19. }
  20. protected ObjectIDGenerator m_idGenerator;
  21. protected Queue m_objectQueue;
  22. public abstract SerializationBinder Binder {
  23. get;
  24. set;
  25. }
  26. public abstract StreamingContext Context {
  27. get;
  28. set;
  29. }
  30. public abstract ISurrogateSelector SurrogateSelector {
  31. get;
  32. set;
  33. }
  34. public abstract object Deserialize (Stream serializationStream);
  35. [MonoTODO]
  36. protected virtual object GetNext (out long objID)
  37. {
  38. throw new NotImplementedException ();
  39. }
  40. [MonoTODO]
  41. protected virtual long Schedule (object obj)
  42. {
  43. throw new NotImplementedException ();
  44. }
  45. public abstract void Serialize (Stream serializationStream, object graph);
  46. protected abstract void WriteArray (object obj, string name, Type memberType);
  47. protected abstract void WriteBoolean (bool val, string name);
  48. protected abstract void WriteByte (byte val, string name);
  49. protected abstract void WriteChar (char val, string name);
  50. protected abstract void WriteDateTime (DateTime val, string name);
  51. protected abstract void WriteDecimal (Decimal val, string name);
  52. protected abstract void WriteDouble (double val, string name);
  53. protected abstract void WriteInt16 (short val, string name);
  54. protected abstract void WriteInt32 (int val, string name);
  55. protected abstract void WriteInt64 (long val, string name);
  56. [MonoTODO]
  57. protected virtual void WriteMember (string memberName, object data)
  58. {
  59. throw new NotImplementedException ();
  60. }
  61. protected abstract void WriteObjectRef (object obj, string name, Type memberType);
  62. protected abstract void WriteSByte (sbyte val, string name);
  63. protected abstract void WriteSingle (float val, string name);
  64. protected abstract void WriteTimeSpan (TimeSpan val, string name);
  65. [CLSCompliant (false)]
  66. protected abstract void WriteUInt16 (ushort val, string name);
  67. [CLSCompliant (false)]
  68. protected abstract void WriteUInt32 (uint val, string name);
  69. [CLSCompliant (false)]
  70. protected abstract void WriteUInt64 (ulong val, string name);
  71. protected abstract void WriteValueType (object obj, string name, Type memberType);
  72. }
  73. }