コード例 #1
0
        public SyncMethodInfoRpcOperation(Func <object> instanceProvider, MethodInfo method, string procedureName) :
            base(procedureName)
        {
            mInstanceProvider = instanceProvider;
            mMethod           = method;
            mMethodInvoker    = MethodInvokeGenerator.CreateInvokeMethod(method);

            if (method.ReturnType != typeof(void))
            {
                mHasResult = true;
            }
            else
            {
                mHasResult = false;
            }

            mCollectionResultTreatment =
                method.GetCollectionResultTreatment();

            mHelper = new MethodInfoHelper(method);

            mParameters =
                method.GetParameters()
                .Where(x => !x.IsOut)
                .Select(parameter => new RpcParameter(parameter))
                .ToArray();

            mResultExtractor = WampResultExtractor.GetResultExtractor(this);

            if (method.ReturnsTuple())
            {
                mResultExtractor = WampResultExtractor.GetValueTupleResultExtractor(method);
            }
        }
コード例 #2
0
        public SyncMethodInfoRpcOperation(object instance, MethodInfo method, string procedureName) :
            base(procedureName)
        {
            mInstance      = instance;
            mMethod        = method;
            mMethodInvoker = MethodInvokeGenerator.CreateInvokeMethod(method);

            if (method.ReturnType != typeof(void))
            {
                mHasResult = true;
            }
            else
            {
                mHasResult = false;
            }

            mCollectionResultTreatment =
                method.GetCollectionResultTreatment();

            mHelper = new MethodInfoHelper(method);

            mParameters =
                method.GetParameters()
                .Where(x => !x.IsOut)
                .Select(parameter => new RpcParameter(parameter))
                .ToArray();
        }
コード例 #3
0
        public AsyncMethodInfoRpcOperation(Func <object> instanceProvider, MethodInfo method, string procedureName) :
            base(procedureName)
        {
            mInstanceProvider = instanceProvider;
            mMethod           = method;
            mMethodInvoker    = MethodInvokeGenerator.CreateTaskInvokeMethod(method);

            if (method.ReturnType != typeof(Task))
            {
                mHasResult = true;
            }
            else
            {
                mHasResult = false;
            }

            mCollectionResultTreatment =
                method.GetCollectionResultTreatment();

            IEnumerable <ParameterInfo> parameterInfos = method.GetParameters();

            if (parameterInfos.LastOrDefault()?.ParameterType == typeof(CancellationToken))
            {
                mSupportsCancellation = true;
                parameterInfos        = parameterInfos.Take(parameterInfos.Count() - 1);
            }

            mParameters =
                parameterInfos
                .Select(parameter => new RpcParameter(parameter))
                .ToArray();

            mResultExtractor = WampResultExtractor.GetResultExtractor(this);

            if (method.ReturnsTuple())
            {
                mResultExtractor = WampResultExtractor.GetValueTupleResultExtractor(method);
            }
        }
コード例 #4
0
 /// <summary>
 /// Creates a new instance of <see cref="WampResultAttribute"/>.
 /// </summary>
 /// <param name="collectionResultTreatment">A value indicating how to treat results of type
 /// <see cref="ICollection{T}"/>.</param>
 public WampResultAttribute(CollectionResultTreatment collectionResultTreatment)
 {
     mCollectionResultTreatment = collectionResultTreatment;
 }