namespace Caliburn.Micro.Core {
using System;
///
/// A result that executes an .
///
public class DelegateResult : IResult {
readonly Action toExecute;
///
/// Initializes a new instance of the class.
///
/// The action.
public DelegateResult(Action action) {
toExecute = action;
}
///
/// Executes the result using the specified context.
///
/// The context.
public void Execute(CoroutineExecutionContext context) {
var eventArgs = new ResultCompletionEventArgs();
try {
toExecute();
}
catch (Exception ex) {
eventArgs.Error = ex;
}
Completed(this, eventArgs);
}
///
/// Occurs when execution has completed.
///
public event EventHandler Completed = delegate { };
}
///
/// A result that executes a
///
/// The type of the result.
public class DelegateResult : IResult {
readonly Func toExecute;
///
/// Initializes a new instance of the class.
///
/// The action.
public DelegateResult(Func action) {
toExecute = action;
}
///
/// Executes the result using the specified context.
///
/// The context.
public void Execute(CoroutineExecutionContext context) {
var eventArgs = new ResultCompletionEventArgs();
try {
Result = toExecute();
}
catch (Exception ex) {
eventArgs.Error = ex;
}
Completed(this, eventArgs);
}
///
/// Gets the result.
///
public TResult Result { get; private set; }
///
/// Occurs when execution has completed.
///
public event EventHandler Completed = delegate { };
}
}