예제 #1
0
        public void Test_AccessTools2_GetDelegate_ClosedInstanceDelegates_InterfaceMethod()
        {
            var f               = 789f;
            var baseInstance    = new AccessTools2MethodDelegate.Base();
            var derivedInstance = new AccessTools2MethodDelegate.Derived();
            var structInstance  = new AccessTools2MethodDelegate.Struct();

            Assert.AreEqual("base test 456 790 1", AccessTools2.GetDelegate <MethodDel>(baseInstance, interfaceTest) !(456, ref f));
            Assert.AreEqual("derived test 456 791 1", AccessTools2.GetDelegate <MethodDel>(derivedInstance, interfaceTest) !(456, ref f));
            Assert.AreEqual("struct result 456 792 1", AccessTools2.GetDelegate <MethodDel>(structInstance, interfaceTest) !(456, ref f));
        }
예제 #2
0
        public void Test_AccessTools2_GetDelegate_OpenInstanceDelegates_DelegateInterfaceInstanceType()
        {
            var f               = 789f;
            var baseInstance    = new AccessTools2MethodDelegate.Base();
            var derivedInstance = new AccessTools2MethodDelegate.Derived();
            var structInstance  = new AccessTools2MethodDelegate.Struct();

            Assert.AreEqual("base test 456 790 1", AccessTools2.GetDelegate <OpenMethodDel <AccessTools2MethodDelegate.IInterface> >(baseTest) !(baseInstance, 456, ref f));
            Assert.AreEqual("derived test 456 791 1", AccessTools2.GetDelegate <OpenMethodDel <AccessTools2MethodDelegate.IInterface> >(baseTest) !(derivedInstance, 456, ref f));
            _ = Assert.Throws(typeof(InvalidCastException), () => AccessTools2.GetDelegate <OpenMethodDel <AccessTools2MethodDelegate.IInterface> >(derivedTest) !(baseInstance, 456, ref f));
            Assert.AreEqual("derived test 456 792 2", AccessTools2.GetDelegate <OpenMethodDel <AccessTools2MethodDelegate.IInterface> >(derivedTest) !(derivedInstance, 456, ref f));
            Assert.AreEqual("struct result 456 793 1", AccessTools2.GetDelegate <OpenMethodDel <AccessTools2MethodDelegate.IInterface> >(structTest) !(structInstance, 456, ref f));
        }
예제 #3
0
        public void Test_AccessTools2_GetDelegate_ClosedInstanceDelegates()
        {
            var f               = 789f;
            var baseInstance    = new AccessTools2MethodDelegate.Base();
            var derivedInstance = new AccessTools2MethodDelegate.Derived();
            var structInstance  = new AccessTools2MethodDelegate.Struct();

            Assert.AreEqual("base test 456 790 1", AccessTools2.GetDelegate <MethodDel>(baseInstance, baseTest) !(456, ref f));
            Assert.IsNull(AccessTools2.GetDelegate <MethodDel>(baseInstance, derivedTest)?.Invoke(456, ref f));
            Assert.AreEqual("derived test 456 791 1", AccessTools2.GetDelegate <MethodDel>(derivedInstance, baseTest) !(456, ref f));
            Assert.AreEqual("derived test 456 792 2", AccessTools2.GetDelegate <MethodDel>(derivedInstance, derivedTest) !(456, ref f));
            Assert.AreEqual("struct result 456 793 1", AccessTools2.GetDelegate <MethodDel>(structInstance, structTest) !(456, ref f));
        }
예제 #4
0
        public void Test_AccessTools2_GetDelegate_OpenInstanceDelegates()
        {
            var f               = 789f;
            var baseInstance    = new AccessTools2MethodDelegate.Base();
            var derivedInstance = new AccessTools2MethodDelegate.Derived();
            var structInstance  = new AccessTools2MethodDelegate.Struct();

            Assert.AreEqual("base test 456 790 1", AccessTools2.GetDelegate <OpenMethodDel <AccessTools2MethodDelegate.Base> >(baseTest) !(baseInstance, 456, ref f));
            Assert.AreEqual("derived test 456 791 1", AccessTools2.GetDelegate <OpenMethodDel <AccessTools2MethodDelegate.Base> >(baseTest) !(derivedInstance, 456, ref f));
            _ = Assert.Throws(typeof(InvalidCastException), () => AccessTools2.GetDelegate <OpenMethodDel <AccessTools2MethodDelegate.Base> >(derivedTest) !(baseInstance, 456, ref f));
            Assert.AreEqual("derived test 456 792 2", AccessTools2.GetDelegate <OpenMethodDel <AccessTools2MethodDelegate.Base> >(derivedTest) !(derivedInstance, 456, ref f));
            //AccessTools2.GetDelegate<OpenMethodDel<AccessToolsMethodDelegate.Derived>>(derivedTest)(baseInstance, 456, ref f); // expected compile error
            Assert.AreEqual("derived test 456 793 3", AccessTools2.GetDelegate <OpenMethodDel <AccessTools2MethodDelegate.Derived> >(derivedTest) !(derivedInstance, 456, ref f));
            Assert.AreEqual("struct result 456 794 1", AccessTools2.GetDelegate <OpenMethodDel <AccessTools2MethodDelegate.Struct> >(structTest) !(structInstance, 456, ref f));
        }
예제 #5
0
        public void Test_AccessTools2_GetDelegate_OpenInstanceDelegates_InterfaceMethod()
        {
            var f               = 789f;
            var baseInstance    = new AccessTools2MethodDelegate.Base();
            var derivedInstance = new AccessTools2MethodDelegate.Derived();
            var structInstance  = new AccessTools2MethodDelegate.Struct();

            Assert.AreEqual("base test 456 790 1", AccessTools2.GetDelegate <OpenMethodDel <AccessTools2MethodDelegate.IInterface> >(interfaceTest) !(baseInstance, 456, ref f));
            Assert.AreEqual("derived test 456 791 1", AccessTools2.GetDelegate <OpenMethodDel <AccessTools2MethodDelegate.IInterface> >(interfaceTest) !(derivedInstance, 456, ref f));
            Assert.AreEqual("struct result 456 792 1", AccessTools2.GetDelegate <OpenMethodDel <AccessTools2MethodDelegate.IInterface> >(interfaceTest) !(structInstance, 456, ref f));
            Assert.AreEqual("base test 456 793 2", AccessTools2.GetDelegate <OpenMethodDel <AccessTools2MethodDelegate.Base> >(interfaceTest) !(baseInstance, 456, ref f));
            Assert.AreEqual("derived test 456 794 2", AccessTools2.GetDelegate <OpenMethodDel <AccessTools2MethodDelegate.Base> >(interfaceTest) !(derivedInstance, 456, ref f));
            //AccessTools2.GetDelegate<OpenMethodDel<AccessToolsMethodDelegate.Derived>>(interfaceTest)!(baseInstance, 456, ref f)); // expected compile error
            Assert.AreEqual("derived test 456 795 3", AccessTools2.GetDelegate <OpenMethodDel <AccessTools2MethodDelegate.Derived> >(interfaceTest) !(derivedInstance, 456, ref f));
            Assert.AreEqual("struct result 456 796 1", AccessTools2.GetDelegate <OpenMethodDel <AccessTools2MethodDelegate.Struct> >(interfaceTest) !(structInstance, 456, ref f));
        }