# 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);
+ }
+
+ ///
/// Дожидается отложенного обещания и в случае успеха, возвращает
/// его, результат, в противном случае бросает исключение.
///