Esempio n. 1
0
        public void LazyDelegateAdapterTest()
        {
            var factoryCounter = 0;
            Func <Func <int, int> > delegFactory = () => {
                factoryCounter++;
                return((a) => a * 2);
            };

            var lazyDelegAdapter = new LazyDelegateAdapter(delegFactory);
            var lazyDeleg        = lazyDelegAdapter.GetDelegate <Func <int, int> >();

            Assert.AreEqual(0, factoryCounter);

            Assert.AreEqual(10, lazyDeleg(5));
            Assert.AreEqual(1, factoryCounter);

            Func <Delegate> strDelegFactory = () => {
                return((Func <string>)testMethod);
            };
            var lazyStrDelegAdapter = new LazyDelegateAdapter(strDelegFactory);
            var lazyStrDeleg        = lazyStrDelegAdapter.GetDelegate <Func <string> >();

            Assert.AreEqual("test", lazyStrDeleg());
        }
Esempio n. 2
0
        public object GetObject()
        {
            var lazyDelegAdapter = new LazyDelegateAdapter(GetRealDelegate);

            return(lazyDelegAdapter.GetDelegate(DelegateType));
        }