for TypeFilter property.
svn path=/trunk/mcs/; revision=20312
private ISurrogateSelector surrogate_selector;
private FormatterTypeStyle type_format; // TODO: Do something with this
+#if NET_1_1
+ private TypeFilterLevel filter_level;
+#endif
+
public BinaryFormatter()
{
surrogate_selector=null;
}
}
+#if NET_1_1
+ public TypeFilterLevel FilterLevel
+ {
+ get { return filter_level; }
+ set { filter_level = value; }
+ }
+#endif
+
public object Deserialize(Stream serializationStream)
{
return Deserialize (serializationStream, null);
BinaryElement elem = (BinaryElement) reader.PeekChar();
if (elem == BinaryElement.MethodCall) {
- return MessageFormatter.ReadMethodCall (reader, hasHeader, handler, surrogate_selector, context, binder);
+ return MessageFormatter.ReadMethodCall (reader, hasHeader, handler, this);
}
else if (elem == BinaryElement.MethodResponse) {
- return MessageFormatter.ReadMethodResponse (reader, hasHeader, handler, null, surrogate_selector, context, binder);
+ return MessageFormatter.ReadMethodResponse (reader, hasHeader, handler, null, this);
}
else {
- ObjectReader serializer = new ObjectReader (surrogate_selector, context, binder);
+ ObjectReader serializer = new ObjectReader (this);
object result;
Header[] headers;
bool hasHeader;
ReadBinaryHeader (reader, out hasHeader);
- return MessageFormatter.ReadMethodResponse (reader, hasHeader, handler, methodCallmessage, surrogate_selector, context, binder);
+ return MessageFormatter.ReadMethodResponse (reader, hasHeader, handler, methodCallmessage, this);
}
public void Serialize(Stream serializationStream, object graph)
+
+ * BinaryFormatter.cs, MessageFormatter.cs, ObjectReader.cs: Added support
+ for TypeFilter property.
+
2003-11-16 Lluis Sanchez Gual <lluis@ximian.com>
* BinaryFormatter.cs, MessageFormatter.cs, ObjectWriter.cs:
writer.Write ((byte) BinaryElement.End);\r
}\r
\r
- public static object ReadMethodCall (BinaryReader reader, bool hasHeaders, HeaderHandler headerHandler, ISurrogateSelector surrogateSelector, StreamingContext context, SerializationBinder binder)\r
+ public static object ReadMethodCall (BinaryReader reader, bool hasHeaders, HeaderHandler headerHandler, BinaryFormatter formatter)\r
{\r
BinaryElement elem = (BinaryElement)reader.ReadByte(); // The element code\r
if (elem != BinaryElement.MethodCall) throw new SerializationException("Invalid format. Expected BinaryElement.MethodCall, found " + elem);\r
if ((flags & MethodFlags.NeedsInfoArrayMask) > 0)\r
{\r
- ObjectReader objectReader = new ObjectReader(surrogateSelector, context, binder);\r
+ ObjectReader objectReader = new ObjectReader (formatter);\r
\r
object result;\r
objectReader.ReadObjectGraph (reader, hasHeaders, out result, out headers);\r
return call;
}\r
\r
- public static object ReadMethodResponse (BinaryReader reader, bool hasHeaders, HeaderHandler headerHandler, IMethodCallMessage methodCallMessage, ISurrogateSelector surrogateSelector, StreamingContext context, SerializationBinder binder)\r
+ public static object ReadMethodResponse (BinaryReader reader, bool hasHeaders, HeaderHandler headerHandler, IMethodCallMessage methodCallMessage, BinaryFormatter formatter)\r
{\r
BinaryElement elem = (BinaryElement)reader.ReadByte(); // The element code\r
if (elem != BinaryElement.MethodResponse) throw new SerializationException("Invalid format. Expected BinaryElement.MethodResponse, found " + elem);\r
{\r
// There objects that need to be deserialized using an ObjectReader\r
\r
- ObjectReader objectReader = new ObjectReader(surrogateSelector, context, binder);\r
+ ObjectReader objectReader = new ObjectReader (formatter);\r
object result;\r
objectReader.ReadObjectGraph (reader, hasHeaders, out result, out headers);\r
object[] msgInfo = (object[]) result;\r
{\r
internal class ObjectReader\r
{\r
+ BinaryFormatter _formatter;\r
ISurrogateSelector _surrogateSelector;\r
StreamingContext _context;\r
SerializationBinder _binder;\r
+ \r
+#if NET_1_1\r
+ TypeFilterLevel _filterLevel;\r
+#endif\r
\r
ObjectManager _manager;\r
Hashtable _registeredAssemblies = new Hashtable();\r
public int NullCount;\r
}\r
\r
- public ObjectReader(ISurrogateSelector surrogateSelector, StreamingContext context, SerializationBinder binder)\r
+ public ObjectReader (BinaryFormatter formatter)\r
{\r
- _manager = new ObjectManager (surrogateSelector, context);\r
- _surrogateSelector = surrogateSelector;\r
- _context = context;\r
- _binder = binder;\r
+ _formatter = formatter;\r
+ _surrogateSelector = formatter.SurrogateSelector;\r
+ _context = formatter.Context;\r
+ _binder = formatter.Binder;\r
+ _manager = new ObjectManager (_surrogateSelector, _context);\r
+ \r
+#if NET_1_1\r
+ _filterLevel = formatter.FilterLevel;\r
+#endif\r
}\r
\r
public void ReadObjectGraph (BinaryReader reader, bool readHeaders, out object result, out Header[] headers)\r
\r
private void ReadObjectContent (BinaryReader reader, TypeMetadata metadata, long objectId, out object objectInstance, out SerializationInfo info)\r
{\r
- objectInstance = FormatterServices.GetUninitializedObject (metadata.Type);\r
+#if NET_1_1\r
+ if (_filterLevel == TypeFilterLevel.Low)\r
+ objectInstance = FormatterServices.GetSafeUninitializedObject (metadata.Type);\r
+ else\r
+#endif\r
+ objectInstance = FormatterServices.GetUninitializedObject (metadata.Type);\r
+ \r
info = metadata.NeedsSerializationInfo ? new SerializationInfo(metadata.Type, new FormatterConverter()) : null;\r
\r
if (metadata.MemberNames != null)\r