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); } }
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(); }
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); } }
/// <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; }