[Mono-dev] Type.cs patch wrt serializability
Zoltan Varga
vargaz at gmail.com
Tue Nov 8 05:02:50 EST 2005
Hi,
This is not correct. net 2.0 rtm does return SerializableAttribute
for types/enums/delegates
but only if the type has the 'serializable' attribute in metadata.
Here is an improved patch:
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Index: Type.cs
===================================================================
--- Type.cs (revision 52628)
+++ Type.cs (working copy)
@@ -1243,7 +1243,8 @@
internal object[] GetPseudoCustomAttributes () {
int count = 0;
- if (IsSerializable)
+ /* IsSerializable returns true for delegates/enums as well */
+ if (Attributes & TypeAttributes.Serializable) != 0)
count ++;
if (count == 0)
@@ -1251,7 +1252,7 @@
object[] attrs = new object [count];
count = 0;
- if (IsSerializable)
+ if (Attributes & TypeAttributes.Serializable) != 0)
attrs [count ++] = new SerializableAttribute ();
return attrs;
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Zoltan
On 11/8/05, Atsushi Eno <atsushi at ximian.com> wrote:
> Hello,
>
> Here is a patch for Type.cs to not add SerializableAttribute for
> Serializable type (the code affects only on 2.0 profile). Currently
> all enums and delegates are automatically added this attribute.
>
> I guess it used to do that, does not seem to apply to in 2.0 RTM.
>
> The attached test should print
> True[CR]False[CR]System.MonoTODOAttribute (no SerializableAttribute).
>
> Is there still any reason we need SerializableAttribute there?
>
> Atsushi Eno
>
>
>
> Index: Type.cs
> ===================================================================
> --- Type.cs (revision 52652)
> +++ Type.cs (working copy)
> @@ -1241,20 +1241,7 @@
> }
>
> internal object[] GetPseudoCustomAttributes () {
> - int count = 0;
> -
> - if (IsSerializable)
> - count ++;
> -
> - if (count == 0)
> - return null;
> - object[] attrs = new object [count];
> - count = 0;
> -
> - if (IsSerializable)
> - attrs [count ++] = new SerializableAttribute ();
> -
> - return attrs;
> + return null;
> }
>
> #endif
>
> using System;
> using System.Xml;
> using System.Xml.Schema;
>
> public class Test
> {
> public static void Main ()
> {
> Console.WriteLine (typeof (MyEnum).IsSerializable);
> foreach (object o in typeof (MyEnum).GetCustomAttributes (false))
> Console.WriteLine (o.GetType ());
> Console.WriteLine (typeof (XmlSchemaInference).IsSerializable);
> foreach (object o in typeof (XmlSchemaInference).GetCustomAttributes (true))
> Console.WriteLine (o.GetType ());
> }
> }
>
> public enum MyEnum
> {
> Foo
> }
>
>
> _______________________________________________
> Mono-devel-list mailing list
> Mono-devel-list at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-devel-list
>
>
>
More information about the Mono-devel-list
mailing list