##// END OF EJS Templates
Closing branch: `v3`
Closing branch: `v3`

File last commit:

r289:95896f882995 v3.0.14 v3
r293:bb6f69f90c6c v3
Show More
IInitializable.cs
30 lines | 1.3 KiB | text/x-csharp | CSharpLexer
using System;
using System.Threading;
namespace Implab.Components {
/// <summary>
/// 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 <see cref="Initialize()"/> method. All parameters needed
/// to complete the initialization must be passed before the calling <see cref="Initialize()"/>
/// </summary>
public interface IInitializable {
/// <summary>
/// Completes initialization.
/// </summary>
/// <remarks>
/// <para>
/// 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.
/// </para>
/// <para>
/// In asyncronous patterns <see cref="Initialize()"/> can be called
/// to start initialization and the <see cref="IRunnable.Completion"/>
/// property can be used to track operation completion.
/// </para>
/// </remarks>
void Initialize();
void Initialize(CancellationToken ct);
}
}