private void InternalGetField(MethodArgStack[] Stack, ref MethodArgStack returnValue, DotNetMethod method) { var val = Stack[0]; var type = (DotNetType)Objects.ObjectRefs[(int)val.value].Fields["internal__type"].value; DotNetField f = null; foreach (var item in type.Fields) { if (item.Name == (string)Stack[Stack.Length - 1].value) { f = item; break; } } if (f == null) { throw new InvalidOperationException(); } var field2 = CreateType("System.Reflection", "FieldInfo"); WriteStringToType(field2, "_internalName", f.Name); Objects.ObjectRefs[(int)field2.value].Fields.Add("ParrentObjectID", new MethodArgStack() { type = StackItemType.Object, value = type }); Objects.ObjectRefs[(int)field2.value].Fields.Add("InternalField", new MethodArgStack() { type = StackItemType.Object, value = f }); returnValue = field2; }
public void DotNetField_Assembly_ArrayTypeField() { //arrange Type type = typeof(C); DotNetType dotNetType = DotNetType.FromVisualStudioXml(XElement.Parse("<member name='T:DataFilesTest.DotNetFieldTests.C'></member>", LoadOptions.PreserveWhitespace)); dotNetType.AddMember(DotNetField.FromVisualStudioXml(XElement.Parse("<member name='F:DataFilesTest.DotNetFieldTests.C.FieldArray'></member>", LoadOptions.PreserveWhitespace))); //act dotNetType.AddAssemblyInfo(type, dotNetType.Name); //assert Assert.IsNotNull(dotNetType.Fields[0].TypeName); Assert.AreEqual("DataFilesTest.DotNetFieldTests.A[]", dotNetType.Fields[0].TypeName.FullName); }
public void DotNetField_Assembly_GetType() { //arrange Type type = typeof(A); DotNetType dotNetType = DotNetType.FromVisualStudioXml(XElement.Parse("<member name='T:A'></member>", LoadOptions.PreserveWhitespace)); dotNetType.AddMember(DotNetField.FromVisualStudioXml(XElement.Parse("<member name='F:A.IntField'></member>", LoadOptions.PreserveWhitespace))); //act dotNetType.AddAssemblyInfo(type, dotNetType.Name); //assert Assert.IsNotNull(dotNetType.Fields[0].TypeName); Assert.AreEqual("System.Int32", dotNetType.Fields[0].TypeName.FullName); }
public void DotNetReferenceClassGeneric_FromAssembly_Field() { //arrange Type type = typeof(ClassGeneric <>); DotNetType dotNetType = DotNetType.FromVisualStudioXml(XElement.Parse("<member name='T:DataFilesTest.DotNetReferenceClassGenericTests.ClassGeneric`1'></member>", LoadOptions.PreserveWhitespace)); dotNetType.AddMember(DotNetField.FromVisualStudioXml(XElement.Parse("<member name='F:DataFilesTest.DotNetReferenceClassGenericTests.ClassGeneric`1.FieldA'></member>", LoadOptions.PreserveWhitespace))); //act dotNetType.AddAssemblyInfo(type, dotNetType.Name); //assert Assert.IsNotNull(dotNetType.Fields[0].TypeName); Assert.AreEqual("Apple", dotNetType.Fields[0].TypeName.FullName); }