GetWritePrimitive() public static method

public static GetWritePrimitive ( Type type ) : MethodInfo
type System.Type
return System.Reflection.MethodInfo
        public void GetStaticMethods(Type type, out MethodInfo writer, out MethodInfo reader)
        {
            var containerType = typeof(Primitives);

            writer = Primitives.GetWritePrimitive(type);
            reader = Primitives.GetReaderPrimitive(type);
        }
Beispiel #2
0
        public MethodInfo GetStaticWriter(Type type)
        {
            Debug.Assert(type.IsEnum);

            var underlyingType = Enum.GetUnderlyingType(type);

            return(Primitives.GetWritePrimitive(underlyingType));
        }
Beispiel #3
0
        public void GetStaticMethods(Type type, out MethodInfo writer, out MethodInfo reader)
        {
            Debug.Assert(type.IsEnum);

            var underlyingType = Enum.GetUnderlyingType(type);

            writer = Primitives.GetWritePrimitive(underlyingType);
            reader = Primitives.GetReaderPrimitive(underlyingType);
        }
Beispiel #4
0
        public MethodInfo GetStaticWriter(Type type)
        {
#if !NET35 && !NET40
            Debug.Assert(type.GetTypeInfo().IsEnum);
#else
            Debug.Assert(type.IsEnum);
#endif
            var underlyingType = Enum.GetUnderlyingType(type);

            return(Primitives.GetWritePrimitive(underlyingType));
        }
Beispiel #5
0
        static Dictionary <Type, TypeData> GenerateTypeData(Type[] types)
        {
            var map = new Dictionary <Type, TypeData>(types.Length);

            // TypeID 0 is reserved for null
            ushort typeID = 1;

            foreach (var type in types)
            {
                var writer = Primitives.GetWritePrimitive(type);
                var reader = Primitives.GetReadPrimitive(type);

                if ((writer != null) != (reader != null))
                {
                    throw new InvalidOperationException(String.Format("Missing a read or write primitive for {0}", type.FullName));
                }

                var isStatic = writer != null;

                if (type.IsPrimitive && isStatic == false)
                {
                    throw new InvalidOperationException(String.Format("Missing primitive read/write methods for {0}", type.FullName));
                }

                var td = new TypeData(typeID++);

                if (isStatic)
                {
                    td.WriterMethodInfo = writer;
                    td.ReaderMethodInfo = reader;
                    td.IsDynamic        = false;
                }
                else
                {
                    if (typeof(System.Runtime.Serialization.ISerializable).IsAssignableFrom(type))
                    {
                        throw new InvalidOperationException(String.Format("Cannot serialize {0}: ISerializable not supported", type.FullName));
                    }

                    td.IsDynamic = true;
                }

                map[type] = td;
            }

            return(map);
        }
 public MethodInfo GetStaticWriter(Type type)
 {
     return(Primitives.GetWritePrimitive(type));
 }
        public void Serialize(Serializer serializer, Type staticType, Stream stream, object ob)
        {
            MethodInfo method = Primitives.GetWritePrimitive(staticType);

            method.Invoke(null, new object[] { stream, ob });
        }
Beispiel #8
0
 public void GetStaticMethods(Type type, out MethodInfo writer, out MethodInfo reader)
 {
     writer = Primitives.GetWritePrimitive(type);
     reader = Primitives.GetReaderPrimitive(type);
 }