示例#1
0
        public void LoadAssembly(string path)
        {
            var refAssembly = Assembly.LoadFrom(path);
            var dotAssembly = new DotAssembly(refAssembly.GetName().Name, false);

            foreach (var refType in refAssembly.GetTypes())
            {
                var dotType = new DotType(refType.Name, dotAssembly);
                dotType.Fields       = FindFields(refType, dotType);
                dotType.Constructors = FindConstructors(refType, dotType);
                dotType.Methods      = FindMethods(refType, dotType);
                dotAssembly.Types.Add(dotType);
            }

            loadedAssemblies.Add(dotAssembly);
        }
示例#2
0
        /// <summary>
        /// Initialize types from mscorlib that are used in the chosen problem.
        /// </summary>
        private void LoadFramework()
        {
            var fwAssembly = new DotAssembly("mscorlib", true);

            var objectType = new DotType("Object", fwAssembly);

            objectType.Constructors.Add(new ObjectCtor(objectType));
            objectType.Methods.Add(new ObjectToString(objectType));
            fwAssembly.Types.Add(objectType);

            var stringType = new DotType("String", fwAssembly);

            stringType.Fields.Add(new DotField("Value", stringType));
            stringType.Methods = new List <DotMethod>
            {
                new StringConcat2(stringType),
                new StringConcat3(stringType),
                new StringFormat(stringType),
                new StringJoin(stringType),
                new StringSplit(stringType)
            };
            fwAssembly.Types.Add(stringType);

            var intType = new DotType("Int32", fwAssembly);

            intType.Methods.Add(new Int32Parse(intType));
            fwAssembly.Types.Add(intType);

            var arrayType = new DotType("Array", fwAssembly);

            arrayType.Fields = new List <DotField>
            {
                new DotField("Values", arrayType),
                new DotField("Length", arrayType),
                new DotField("ElementType", arrayType)
            };
            fwAssembly.Types.Add(arrayType);

            var listType = new DotType("List`1", fwAssembly);

            listType.Fields.Add(new DotField("Values", listType));
            listType.Constructors.Add(new ListCapacityCtor(listType));
            listType.Methods = new List <DotMethod>
            {
                new ListAdd(listType),
                new ListAddRange(listType),
                new ListGetCount(listType),
                new ListGetItem(listType),
                new ListGetRange(listType),
                new ListIndexOf(listType),
                new ListInsert(listType),
                new ListRemoveAt(listType),
                new ListRemoveRange(listType)
            };
            fwAssembly.Types.Add(listType);

            var fileType = new DotType("File", fwAssembly);

            fileType.Methods = new List <DotMethod>
            {
                new FileReadAllLines(fileType),
                new FileWriteAllText(fileType)
            };
            fwAssembly.Types.Add(fileType);

            var enviType = new DotType("Environment", fwAssembly);

            enviType.Methods.Add(new EnvironmentGetNewLine(enviType));
            fwAssembly.Types.Add(enviType);

            loadedAssemblies.Add(fwAssembly);
        }