Пример #1
0
        private static void CompareToInner(ClrType Types, ClrDelegate del, ClrDelegateTarget delegateTarget)
        {
            Assert.True(del.Object.IsDelegate); // This delegate targets a static method

            Assert.NotNull(delegateTarget.Method);
            Assert.Equal(Types, delegateTarget.Method.Type);
            Assert.Equal("Inner", delegateTarget.Method.Name);
        }
Пример #2
0
        private static void CompareToInstanceMethod(ClrType Types, ClrDelegate del, ClrDelegateTarget delegateTarget)
        {
            Assert.NotEqual(del.Object.Address, delegateTarget.TargetObject.Address); // This delegate is an instance method of "Types"
            Assert.Equal(Types, delegateTarget.TargetObject.Type);

            Assert.NotNull(delegateTarget.Method);
            Assert.Equal(Types, delegateTarget.Method.Type);
            Assert.Equal("InstanceMethod", delegateTarget.Method.Name);
        }
Пример #3
0
        public void GetDelegateTest()
        {
            using DataTarget dt      = TestTargets.Types.LoadFullDump();
            using ClrRuntime runtime = dt.ClrVersions.Single().CreateRuntime();
            ClrModule typesModule = runtime.GetModule(TypeTests.ModuleName);
            ClrType   Types       = typesModule.GetTypeByName("Types");

            ClrDelegate TestDelegate = Types.GetStaticFieldByName("TestDelegate").ReadObject(runtime.AppDomains.Single()).AsDelegate();

            ClrDelegateTarget delegateTarget = TestDelegate.GetDelegateTarget();

            Assert.NotNull(delegateTarget);
            CompareToInner(Types, TestDelegate, delegateTarget);

            ClrDelegate       TestEvent   = Types.GetStaticFieldByName("TestEvent").ReadObject(runtime.AppDomains.Single()).AsDelegate();
            ClrDelegateTarget eventTarget = TestEvent.GetDelegateTarget();

            Assert.Null(eventTarget);
        }