using System;
using System.Threading;
namespace Implab.Components {
///
/// Initializable components are created and initialized in two steps, first we have create the component,
/// then we have to complete it's creation by calling an method. All parameters needed
/// to complete the initialization must be passed before the calling
///
public interface IInitializable {
///
/// Completes initialization.
///
///
///
/// Normally virtual methods shouldn't be called from the constructor, due to the incomplete object state, but
/// they can be called from this method. This method is also usefull when we constructing a complex grpah
/// of components where cyclic references may take place.
///
///
/// In asyncronous patterns can be called
/// to start initialization and the
/// property can be used to track operation completion.
///
///
void Initialize();
void Initialize(CancellationToken ct);
}
}