summaryrefslogtreecommitdiff
path: root/Client/Assets/Scripts/XMainClient/ProtoBuf/SerializationContext.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Client/Assets/Scripts/XMainClient/ProtoBuf/SerializationContext.cs')
-rw-r--r--Client/Assets/Scripts/XMainClient/ProtoBuf/SerializationContext.cs57
1 files changed, 57 insertions, 0 deletions
diff --git a/Client/Assets/Scripts/XMainClient/ProtoBuf/SerializationContext.cs b/Client/Assets/Scripts/XMainClient/ProtoBuf/SerializationContext.cs
new file mode 100644
index 00000000..1259b708
--- /dev/null
+++ b/Client/Assets/Scripts/XMainClient/ProtoBuf/SerializationContext.cs
@@ -0,0 +1,57 @@
+using System;
+
+namespace ProtoBuf
+{
+ public sealed class SerializationContext
+ {
+ public object Context
+ {
+ get
+ {
+ return this.context;
+ }
+ set
+ {
+ bool flag = this.context != value;
+ if (flag)
+ {
+ this.ThrowIfFrozen();
+ this.context = value;
+ }
+ }
+ }
+
+ internal static SerializationContext Default
+ {
+ get
+ {
+ return SerializationContext.@default;
+ }
+ }
+
+ private bool frozen;
+
+ private object context;
+
+ private static readonly SerializationContext @default = new SerializationContext();
+
+ internal void Freeze()
+ {
+ this.frozen = true;
+ }
+
+ private void ThrowIfFrozen()
+ {
+ bool flag = this.frozen;
+ if (flag)
+ {
+ throw new InvalidOperationException("The serialization-context cannot be changed once it is in use");
+ }
+ }
+
+ static SerializationContext()
+ {
+ SerializationContext.@default.Freeze();
+ }
+ }
+}