示例#1
0
        public static void Instance()
        {
            var myObject      = new MyObject(0, false);
            var instanceClass = new InstanceClass();

            Assert.AreEqual(Name.Of(instanceClass.InstanceClassNullableTypeField), "InstanceClassNullableTypeField");
            Assert.AreEqual(Name.Of(instanceClass.InstanceClassSystemValueTypeField), "InstanceClassSystemValueTypeField");
            Assert.AreEqual(Name.Of(instanceClass.InstanceClassSystemReferenceTypeField), "InstanceClassSystemReferenceTypeField");
            Assert.AreEqual(Name.Of(instanceClass.InstanceClassValueTypeField), "InstanceClassValueTypeField");
            Assert.AreEqual(Name.Of(instanceClass.InstanceClassReferenceTypeField), "InstanceClassReferenceTypeField");
            Assert.AreEqual(Name.Of(instanceClass.InstanceClassValueTypeDelegateField), "InstanceClassValueTypeDelegateField");
            Assert.AreEqual(Name.Of(instanceClass.InstanceClassReferenceTypeDelegateField), "InstanceClassReferenceTypeDelegateField");
            Assert.AreEqual(Name.Of(instanceClass.InstanceClassDelegateField), "InstanceClassDelegateField");
            Assert.AreEqual(Name.Of(instanceClass.InstanceClassNullableTypeProperty), "InstanceClassNullableTypeProperty");
            Assert.AreEqual(Name.Of(instanceClass.InstanceClassSystemValueTypeProperty), "InstanceClassSystemValueTypeProperty");
            Assert.AreEqual(Name.Of(instanceClass.InstanceClassSystemReferenceTypeProperty), "InstanceClassSystemReferenceTypeProperty");
            Assert.AreEqual(Name.Of(instanceClass.InstanceClassValueTypeProperty), "InstanceClassValueTypeProperty");
            Assert.AreEqual(Name.Of(instanceClass.InstanceClassReferenceTypeProperty), "InstanceClassReferenceTypeProperty");
            Assert.AreEqual(Name.Of(instanceClass.InstanceClassValueTypeDelegateProperty), "InstanceClassValueTypeDelegateProperty");
            Assert.AreEqual(Name.Of(instanceClass.InstanceClassReferenceTypeDelegateProperty), "InstanceClassReferenceTypeDelegateProperty");
            Assert.AreEqual(Name.Of(instanceClass.InstanceClassDelegateProperty), "InstanceClassDelegateProperty");
            Assert.AreEqual(Name.Of(instanceClass.InstanceClassNullableTypeMethod), "InstanceClassNullableTypeMethod");
            Assert.AreEqual(Name.Of(instanceClass.InstanceClassSystemValueTypeMethod), "InstanceClassSystemValueTypeMethod");
            Assert.AreEqual(Name.Of(instanceClass.InstanceClassSystemValueTypeMethod()), "InstanceClassSystemValueTypeMethod");
            Assert.AreEqual(Name.Of(instanceClass.InstanceClassSystemReferenceTypeMethod()), "InstanceClassSystemReferenceTypeMethod");
            Assert.AreEqual(Name.Of(instanceClass.InstanceClassSystemReferenceTypeMethodWithParameters(default(Object))), "InstanceClassSystemReferenceTypeMethodWithParameters");
            //Assert.AreEqual(Name.Of(instanceClass.InstanceClassSystemReferenceTypeMethodWithParameters(default(Object), default(Int32), default(Int64), default(Boolean), default(Struct), default(Struct))), "InstanceClassSystemReferenceTypeMethodWithParameters");

            // ldloc.0
            // ldfld class AssemblyToProcess.InstanceClass AssemblyToProcess.Invocations/<>c__DisplayClass43::instanceClass
            // callvirt instance string AssemblyToProcess.InstanceClass::InstanceClassSystemReferenceTypeMethod()
            // call string [Name.Of]Name::Of(object)

            //Assert.AreEqual(Name.Of(instanceClass.InstanceClassSystemReferenceTypeMethod(default(Object), default(Int32), default(Struct))), "InstanceClassSystemReferenceTypeMethod");
            // ldloc.0
            // ldfld class AssemblyToProcess.InstanceClass AssemblyToProcess.Invocations/<>c__DisplayClass43::instanceClass
            // ldnull
            // ldc.i4.0
            // ldloca.s CS$0$0000
            // initobj AssemblyToProcess.Invocations/Struct
            // ldloc.1
            // callvirt instance string AssemblyToProcess.InstanceClass::InstanceClassSystemReferenceTypeMethod(object, int32, valuetype AssemblyToProcess.Invocations/Struct)
            // call string [Name.Of]Name::Of(object)

            Assert.AreEqual(Name.Of(instanceClass.InstanceClassValueTypeMethod), "InstanceClassValueTypeMethod");
            Assert.AreEqual(Name.Of(instanceClass.InstanceClassReferenceTypeMethod), "InstanceClassReferenceTypeMethod");
            Assert.AreEqual(Name.Of(instanceClass.InstanceClassValueTypeGenericMethod <V>), "InstanceClassValueTypeGenericMethod");
            Assert.AreEqual(Name.Of(instanceClass.InstanceClassReferenceTypeGenericMethod <R, V, R, R>), "InstanceClassReferenceTypeGenericMethod");
            Assert.AreEqual(Name.Of(instanceClass.InstanceClassValueTypeDelegateMethod), "InstanceClassValueTypeDelegateMethod");
            Assert.AreEqual(Name.Of(instanceClass.InstanceClassReferenceTypeDelegateMethod), "InstanceClassReferenceTypeDelegateMethod");
            Assert.AreEqual(Name.Of(instanceClass.InstanceClassDelegateMethod), "InstanceClassDelegateMethod");
            Assert.AreEqual(Name.OfVoid(instanceClass.InstanceClassVoidMethod), "InstanceClassVoidMethod");
            Assert.AreEqual(Name.OfVoid(instanceClass.InstanceClassVoidGenericMethod <R>), "InstanceClassVoidGenericMethod");
            Assert.AreEqual(Name.Of(e => instanceClass.InstanceClassEvent += e), "InstanceClassEvent");
        }
示例#2
0
        public static void Member()
        {
            Assert.AreEqual(Name.Of(Method), "Method");
            // ldnull
            // ldftn object AssemblyToProcess.Invocations::Method()
            // newobj instance void [mscorlib]System.Func`1<object>::.ctor(object, native int)
            // call string [Name.Of]Name::Of<object>(class [mscorlib]System.Func`1<!!0>)

            Assert.AreEqual(Name.OfVoid(VoidMethod), "VoidMethod");
            // ldnull
            // ldftn void AssemblyToProcess.Invocations::VoidMethod()
            // newobj instance void [mscorlib]System.Action::.ctor(object, native int)
            // call string [Name.Of]Name::OfVoid(class [mscorlib]System.Action)

            Assert.AreEqual(Name.Of(valueTypeField), "valueTypeField");
            // ldsfld bool AssemblyToProcess.Invocations::valueTypeField
            // box bool
            // call string [Name.Of]Name::Of(object)

            Assert.AreEqual(Name.Of(referenceTypeField), "referenceTypeField");
            // ldsfld bool AssemblyToProcess.Invocations::valueTypeField
            // box bool
            // call string [Name.Of]Name::Of(object)

            Assert.AreEqual(Name.Of(ValueTypeProperty), "ValueTypeProperty");
            // call bool AssemblyToProcess.Invocations::get_ValueTypeProperty()
            // box bool
            // call string [Name.Of]Name::Of(object)

            Assert.AreEqual(Name.Of(ReferenceTypeProperty), "ReferenceTypeProperty");
            // call string AssemblyToProcess.Invocations::get_ReferenceTypeProperty()
            // call string [Name.Of]Name::Of(object)

            var instanceClass = new InstanceClass();

            Assert.AreEqual(Name.OfVoid(instanceClass.Run), "Run");
            instanceClass.Run();
        }