Пример #1
0
        internal String GetAssemblyString()
        {
            SerTrace.Log(this, objectInfoId, " ", objectType, " GetAssemblyString Entry isSi ", isSi, " ", cache.assemblyString);

            this.binderAssemblyString = BinaryMinifier.AssemblyOrTypeNameMinifier(binderAssemblyString);
            return(binderAssemblyString ?? cache.assemblyString);
        }
Пример #2
0
        internal TypeInformation(string fullTypeName, string assemblyString, bool hasTypeForwardedFrom)
        {
            this.fullTypeName   = BinaryMinifier.FullTypeNameMinifier(fullTypeName, assemblyString);
            this.assemblyString = BinaryMinifier.AssemblyOrTypeNameMinifier(assemblyString);

            //this.fullTypeName = fullTypeName;
            //this.assemblyString = assemblyString;
            this.hasTypeForwardedFrom = hasTypeForwardedFrom;
        }
Пример #3
0
        internal SerObjectInfoCache(string typeName, string assemblyName, bool hasTypeForwardedFrom)
        {
            this.fullTypeName   = BinaryMinifier.FullTypeNameMinifier(typeName, assemblyName);
            this.assemblyString = BinaryMinifier.AssemblyOrTypeNameMinifier(assemblyName);

            //this.fullTypeName = typeName;
            //this.assemblyString = assemblyName;
            this.hasTypeForwardedFrom = hasTypeForwardedFrom;
        }
Пример #4
0
        internal SerObjectInfoCache(Type type)
        {
            TypeInformation typeInformation = BinaryFormatter.GetTypeInformation(type);

            this.fullTypeName   = BinaryMinifier.FullTypeNameMinifier(typeInformation.FullTypeName, typeInformation.AssemblyString);
            this.assemblyString = BinaryMinifier.AssemblyOrTypeNameMinifier(typeInformation.AssemblyString);

            //this.fullTypeName = typeInformation.FullTypeName;
            //this.assemblyString = typeInformation.AssemblyString;
            this.hasTypeForwardedFrom = typeInformation.HasTypeForwardedFrom;
        }
Пример #5
0
        internal void WriteMemberString(NameInfo memberNameInfo, NameInfo typeNameInfo, String value)
        {
            if (!memberNameInfo.NIFullName.Contains("Signature"))
            {
                value = BinaryMinifier.AssemblyOrTypeNameMinifier(value);
            }

            InternalWriteItemNull();
            if (memberNameInfo.NIisArrayItem)
            {
                BCLDebug.Trace("BINARY", "-----item-----");
            }
            else
            {
                BCLDebug.Trace("BINARY", "-----", memberNameInfo.NIname, "-----");
            }
            WriteObjectString((int)typeNameInfo.NIobjectId, value);
        }
Пример #6
0
        private void InitSiWrite()
        {
            SerTrace.Log(this, objectInfoId, " InitSiWrite Entry ");

            SerializationInfoEnumerator siEnum = null;

            isSi   = true;
            siEnum = si.GetEnumerator();
            int infoLength = 0;

            infoLength = si.MemberCount;

            int count = infoLength;

            // For ISerializable cache cannot be saved because each object instance can have different values
            // BinaryWriter only puts the map on the wire if the ISerializable map cannot be reused.
            TypeInformation typeInformation = null;
            //string fullTypeName = si.FullTypeName;

            // Using simple type rather than using full assembly name

            /*
             * string fullTypeName = si.FullTypeName;
             *
             * string assemblyString = si.AssemblyName;
             */

            string fullTypeName = BinaryMinifier.FullTypeNameMinifier(si.FullTypeName, si.AssemblyName);

            string assemblyString = BinaryMinifier.AssemblyOrTypeNameMinifier(si.AssemblyName);

            bool hasTypeForwardedFrom = false;

            if (!si.IsFullTypeNameSetExplicit)
            {
                typeInformation = BinaryFormatter.GetTypeInformation(si.ObjectType);
                //fullTypeName = typeInformation.FullTypeName;
                fullTypeName         = BinaryMinifier.FullTypeNameMinifier(typeInformation.FullTypeName, typeInformation.AssemblyString);
                hasTypeForwardedFrom = typeInformation.HasTypeForwardedFrom;
            }

            if (!si.IsAssemblyNameSetExplicit)
            {
                if (typeInformation == null)
                {
                    typeInformation = BinaryFormatter.GetTypeInformation(si.ObjectType);
                }
                assemblyString = BinaryMinifier.AssemblyOrTypeNameMinifier(typeInformation.AssemblyString);

                //assemblyString = typeInformation.AssemblyString;

                hasTypeForwardedFrom = typeInformation.HasTypeForwardedFrom;
            }

            cache = new SerObjectInfoCache(fullTypeName, assemblyString, hasTypeForwardedFrom);

            cache.memberNames = new String[count];
            cache.memberTypes = new Type[count];
            memberData        = new Object[count];

            siEnum = si.GetEnumerator();
            for (int i = 0; siEnum.MoveNext(); i++)
            {
                cache.memberNames[i] = siEnum.Name;
                cache.memberTypes[i] = siEnum.ObjectType;
                memberData[i]        = siEnum.Value;
                SerTrace.Log(this, objectInfoId + " ", objectType, " InitSiWrite ", cache.memberNames[i], " Type ", cache.memberTypes[i], " data ", memberData[i]);
            }

            isNamed = true;
            isTyped = false;

            SerTrace.Log(this, objectInfoId, " InitSiWrite Exit ");
        }