@@ -51,29 +51,6 @@ public static byte[] Serialize<T>(T instance)
5151 }
5252 }
5353
54- /// <summary>
55- /// Serializes a class instance and writes it to a writer
56- /// </summary>
57- /// <typeparam name="T">The class type to serialize</typeparam>
58- /// <param name="instance">The instance to serialize</param>
59- /// <param name="writer">The writer to write to</param>
60- public static void Serialize ( object instance , BitWriter writer )
61- {
62- FieldInfo [ ] sortedFields ;
63-
64- if ( cachedFields . ContainsKey ( instance . GetType ( ) . FullName ) )
65- sortedFields = cachedFields [ instance . GetType ( ) . FullName ] ;
66- else
67- {
68- sortedFields = instance . GetType ( ) . GetFields ( BindingFlags . Public | BindingFlags . NonPublic | BindingFlags . Instance ) . OrderBy ( x => x . Name ) . Where ( x => ! x . IsDefined ( typeof ( BinaryIgnore ) , true ) ) . ToArray ( ) ;
69- cachedFields . Add ( instance . GetType ( ) . FullName , sortedFields ) ;
70- }
71- for ( int i = 0 ; i < sortedFields . Length ; i ++ )
72- {
73- FieldTypeHelper . WriteFieldType ( writer , sortedFields [ i ] . GetValue ( instance ) ) ;
74- }
75- }
76-
7754 /// <summary>
7855 /// Deserializes binary and turns it back into the original class
7956 /// </summary>
@@ -110,12 +87,13 @@ public static void Serialize(object instance, BitWriter writer)
11087 /// <typeparam name="T">The type to return</typeparam>
11188 /// <param name="reader">The reader to deserialize</param>
11289 /// <returns>An instance of T</returns>
113- public static object Deserialize ( BitReader reader , Type type )
90+ public static T Deserialize < T > ( BitReader reader ) where T : new ( )
11491 {
115- object instance = Activator . CreateInstance ( type ) ;
92+ T instance = new T ( ) ;
93+
11694 FieldInfo [ ] sortedFields ;
11795
118- if ( cachedFields . ContainsKey ( type . FullName ) )
96+ if ( cachedFields . ContainsKey ( instance . GetType ( ) . FullName ) )
11997 sortedFields = cachedFields [ instance . GetType ( ) . FullName ] ;
12098 else
12199 {
@@ -130,16 +108,8 @@ public static object Deserialize(BitReader reader, Type type)
130108 return instance ;
131109 }
132110
133- /// <summary>
134- /// Deserializes binary and turns it back into the original class
135- /// </summary>
136- /// <typeparam name="T">The type to return</typeparam>
137- /// <param name="reader">The reader to deserialize</param>
138- /// <returns>An instance of T</returns>
139- public static T Deserialize < T > ( BitReader reader ) where T : new ( )
111+ internal static void Serialize ( object instance , BitWriter writer )
140112 {
141- T instance = new T ( ) ;
142-
143113 FieldInfo [ ] sortedFields ;
144114
145115 if ( cachedFields . ContainsKey ( instance . GetType ( ) . FullName ) )
@@ -149,6 +119,24 @@ public static object Deserialize(BitReader reader, Type type)
149119 sortedFields = instance . GetType ( ) . GetFields ( BindingFlags . Public | BindingFlags . NonPublic | BindingFlags . Instance ) . OrderBy ( x => x . Name ) . Where ( x => ! x . IsDefined ( typeof ( BinaryIgnore ) , true ) ) . ToArray ( ) ;
150120 cachedFields . Add ( instance . GetType ( ) . FullName , sortedFields ) ;
151121 }
122+ for ( int i = 0 ; i < sortedFields . Length ; i ++ )
123+ {
124+ FieldTypeHelper . WriteFieldType ( writer , sortedFields [ i ] . GetValue ( instance ) ) ;
125+ }
126+ }
127+
128+ internal static object Deserialize ( BitReader reader , Type type )
129+ {
130+ object instance = Activator . CreateInstance ( type ) ;
131+ FieldInfo [ ] sortedFields ;
132+
133+ if ( cachedFields . ContainsKey ( type . FullName ) )
134+ sortedFields = cachedFields [ instance . GetType ( ) . FullName ] ;
135+ else
136+ {
137+ sortedFields = instance . GetType ( ) . GetFields ( BindingFlags . Public | BindingFlags . NonPublic | BindingFlags . Instance ) . OrderBy ( x => x . Name ) . Where ( x => ! x . IsDefined ( typeof ( BinaryIgnore ) , true ) ) . ToArray ( ) ;
138+ cachedFields . Add ( instance . GetType ( ) . FullName , sortedFields ) ;
139+ }
152140
153141 for ( int i = 0 ; i < sortedFields . Length ; i ++ )
154142 {
0 commit comments