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); }
/// <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); }