# HG changeset patch # User cin # Date 1394114343 -14400 # Node ID 768f7deeb55bc33bd0bc5383560ecaafaf916084 # Parent 81708975d6f78efe0e076ff80454ba50931db759 Added a casting method for promises. diff -r 81708975d6f7 -r 768f7deeb55b Implab/IPromiseBase.cs --- a/Implab/IPromiseBase.cs Mon Mar 03 09:00:23 2014 +0400 +++ b/Implab/IPromiseBase.cs Thu Mar 06 17:59:03 2014 +0400 @@ -12,6 +12,11 @@ get; } + /// + /// Тип результата, получаемого через данное обещание. + /// + Type PromiseType { get; } + bool IsResolved { get; } bool IsCancelled { get; } @@ -19,5 +24,7 @@ IPromiseBase Then(Action success,ErrorHandler error); IPromiseBase Then(Action success); + IPromise Cast(); + } } diff -r 81708975d6f7 -r 768f7deeb55b Implab/Promise.cs --- a/Implab/Promise.cs Mon Mar 03 09:00:23 2014 +0400 +++ b/Implab/Promise.cs Thu Mar 06 17:59:03 2014 +0400 @@ -11,7 +11,7 @@ public delegate T ErrorHandler(Exception e); public delegate void ResultHandler(T result); public delegate TNew ResultMapper(TSrc result); - public delegate Promise ChainedOperation(TSrc result); + public delegate Promise ChainedOperation(TSrc result); /// /// Класс для асинхронного получения результатов. Так называемое "обещание". @@ -137,6 +137,10 @@ } } + public Type PromiseType { + get { return typeof(T); } + } + /// /// Выполняет обещание, сообщая об успешном выполнении. /// @@ -473,6 +477,15 @@ } /// + /// Преобразует результат обещания к нужному типу + /// + /// + /// + public IPromise Cast() { + return Map(x => (T2)(object)x, null); + } + + /// /// Дожидается отложенного обещания и в случае успеха, возвращает /// его, результат, в противном случае бросает исключение. ///