Mercurial > pub > ImplabNet
comparison Implab/Promise.cs @ 29:768f7deeb55b
Added a casting method for promises.
author | cin |
---|---|
date | Thu, 06 Mar 2014 17:59:03 +0400 |
parents | 81708975d6f7 |
children | 2fad2d1f4b03 |
comparison
equal
deleted
inserted
replaced
28:81708975d6f7 | 29:768f7deeb55b |
---|---|
9 | 9 |
10 public delegate void ErrorHandler(Exception e); | 10 public delegate void ErrorHandler(Exception e); |
11 public delegate T ErrorHandler<out T>(Exception e); | 11 public delegate T ErrorHandler<out T>(Exception e); |
12 public delegate void ResultHandler<in T>(T result); | 12 public delegate void ResultHandler<in T>(T result); |
13 public delegate TNew ResultMapper<in TSrc, out TNew>(TSrc result); | 13 public delegate TNew ResultMapper<in TSrc, out TNew>(TSrc result); |
14 public delegate Promise<TNew> ChainedOperation<in TSrc, TNew>(TSrc result); | 14 public delegate Promise<TNew> ChainedOperation<in TSrc,TNew>(TSrc result); |
15 | 15 |
16 /// <summary> | 16 /// <summary> |
17 /// Класс для асинхронного получения результатов. Так называемое "обещание". | 17 /// Класс для асинхронного получения результатов. Так называемое "обещание". |
18 /// </summary> | 18 /// </summary> |
19 /// <typeparam name="T">Тип получаемого результата</typeparam> | 19 /// <typeparam name="T">Тип получаемого результата</typeparam> |
135 get { | 135 get { |
136 return m_state == CancelledState; | 136 return m_state == CancelledState; |
137 } | 137 } |
138 } | 138 } |
139 | 139 |
140 public Type PromiseType { | |
141 get { return typeof(T); } | |
142 } | |
143 | |
140 /// <summary> | 144 /// <summary> |
141 /// Выполняет обещание, сообщая об успешном выполнении. | 145 /// Выполняет обещание, сообщая об успешном выполнении. |
142 /// </summary> | 146 /// </summary> |
143 /// <param name="result">Результат выполнения.</param> | 147 /// <param name="result">Результат выполнения.</param> |
144 /// <exception cref="InvalidOperationException">Данное обещание уже выполнено</exception> | 148 /// <exception cref="InvalidOperationException">Данное обещание уже выполнено</exception> |
468 x => handler(), | 472 x => handler(), |
469 e => handler(), | 473 e => handler(), |
470 handler | 474 handler |
471 ); | 475 ); |
472 return this; | 476 return this; |
477 } | |
478 | |
479 /// <summary> | |
480 /// Преобразует результат обещания к нужному типу | |
481 /// </summary> | |
482 /// <typeparam name="T2"></typeparam> | |
483 /// <returns></returns> | |
484 public IPromise<T2> Cast<T2>() { | |
485 return Map(x => (T2)(object)x, null); | |
473 } | 486 } |
474 | 487 |
475 /// <summary> | 488 /// <summary> |
476 /// Дожидается отложенного обещания и в случае успеха, возвращает | 489 /// Дожидается отложенного обещания и в случае успеха, возвращает |
477 /// его, результат, в противном случае бросает исключение. | 490 /// его, результат, в противном случае бросает исключение. |