protected object CallOnConnectedProxy(Type contractType, string methodName, params object[] @params)
        {
            object retObj = null;

            var channelFactory = new ChannelFactory(contractType, testOptimizationPack);

            var channel = channelFactory.CreateConnectedChannel(typeCacher, arbitaryPort);

            var method = channel.GetType().GetMethod(methodName);

            using (var trxScope = new TransactionScope(TransactionScopeOption.RequiresNew))
            {
                retObj = method.Invoke(channel, @params);

                if (channel is IDisposable)
                {
                    ((IDisposable)channel).Dispose();
                }

                trxScope.Complete();
            }

            return(retObj);
        }
Beispiel #2
0
        public static object CreateQueryProxy(Type type, IOptimizationPackage optPack)
        {
            var channelFactory = new ChannelFactory(type, optPack);

            return(channelFactory.CreateConnectedChannel(TypeCacher.Instance, isTransactional: false));
        }