コード例 #1
0
        public MessengerBase <TKey> AddRequest <TRequestObject, TResult>(Func <TRequestObject, Task <TResult> > func)
            where TRequestObject : class, IRequestObject <TKey>
        {
            var container = new RequestResultContainer(typeof(TRequestObject), typeof(TResult));
            var request   = new RequestWrapper <TKey, TRequestObject, TResult>();

            asyncRequests.Add(container, request.InitAsync(func));

            return(this);
        }
コード例 #2
0
        public virtual TResult ReceiveQuery <TResult>(IRequestObject <TKey> request)
        {
            RequestResultContainer _iRequest = requests.Keys.FirstOrDefault(x => x.HasRequestedTypeAndExpectedResult(request.GetType(), typeof(TResult)));

            if (_iRequest == null)
            {
                throw new KeyNotFoundException();
            }

            return((TResult)requests[_iRequest].InvokeRequest(request));
        }