Пример #1
0
            bool ReadClasses()
            {
                int classCount        = reader.ReadInt32();
                int externalTypeCount = reader.ReadInt32();

                types = new IReturnType[classCount + externalTypeCount];
                DefaultClass[] classes = new DefaultClass[classCount];
                for (int i = 0; i < classes.Length; i++)
                {
                    DefaultClass c = new DefaultClass(pc.AssemblyCompilationUnit, reader.ReadString());
                    classes[i] = c;
                    types[i]   = c.DefaultReturnType;
                }
                for (int i = classCount; i < types.Length; i++)
                {
                    string name = reader.ReadString();
                    types[i] = new GetClassReturnType(pc, name, reader.ReadByte());
                }
                stringArray = new string[reader.ReadInt32()];
                for (int i = 0; i < stringArray.Length; i++)
                {
                    stringArray[i] = reader.ReadString();
                }
                ReadAttributes(pc.AssemblyCompilationUnit);
                for (int i = 0; i < classes.Length; i++)
                {
                    ReadClass(classes[i]);
                    pc.AddClassToNamespaceList(classes[i]);
                    if (reader.ReadByte() != 64)
                    {
                        return(false);
                    }
                }
                return(true);
            }
Пример #2
0
        public IReturnType ToDefaultDelegate()
        {
            IReturnType        type       = new GetClassReturnType(cu.ProjectContent, "System.Func", 0);
            List <IReturnType> parameters = new List <IReturnType>();

            if (this.HasParameterList)
            {
                parameters = MethodParameters.Select(p => p.ReturnType ?? new GetClassReturnType(cu.ProjectContent, "System.Object", 0)).ToList();
            }

            if (this.MethodReturnType != null && this.MethodReturnType.FullyQualifiedName == "System.Void")
            {
                type = new GetClassReturnType(cu.ProjectContent, "System.Action", 0);
            }
            else
            {
                var rt = this.MethodReturnType;
                if (rt == null)
                {
                    rt = new GetClassReturnType(cu.ProjectContent, "System.Object", 0);
                }
                parameters.Add(rt);
            }

            return(new ConstructedReturnType(type, parameters));
        }