Une activité custom peut devenir un scope de variables, ce n’est pas que la panache des Flow Controls intégrés à WF4.

Mais attention! Un scope n’est qu’un “réceptacle” de variables. Il n’est pas destiné à ce que votre activité manipule les instances de Variable. Pour cela il faut utiliser Argument. Et si vous avez suivi mon précédent post sur les classes Actrivity, il vous semblera logique pour un conteneur d’activités / variables d’hériter de NativeActivity.

Pour que le designer de Variable prenne en compte votre activité comme scope de variables, il suffit de rendre accessible une propriété nommée Variable de type Collection et le tour est joué. Votre collection serra utilisable en interne et pourra être modifiée via le Designer… elle est pas belle la vie?!

Vb

Public NotInheritable Class MySequence 
    Inherits NativeActivity

    #Region "Déclarations"

    Private ReadOnly m_Variables As Collection(Of Variable)

    #End Region

    #Region "Constructeur"

    ''' 
    ''' Constructeur
    ''' 
    Public Sub New()
        Me.m_Variables = New Collection(Of Variable)
    End Sub

    #End Region

    #Region "Propriétés"

    ''' 
    ''' Liste de variables
    ''' 
    
    Public ReadOnly Property Variables As Collection(Of Variable)
         Get
             Return Me.m_Variables
         End Get
    End Property

    #End Region

    ' ...
End Class

C#

public sealed class MySequence : NativeActivity
{
    #region "Déclarations"

    private readonly Collection<Variable> m_Variables;

    #endregion

    #region "Constructeur"

    /// 
    /// Constructeur
    /// 
    public MySequence()
    {
        this.m_Variables = new Collection();
    }

    #endregion

    #region "Propriétés"

    /// 
    /// Liste de variables
    /// 
    [Browsable(false)]
    public Collection<Variable> Variables
    {
        get { return this.m_Variables; }
    }

    #endregion

    // ...
}