Utilizzo delle Dependency Properties nello sviluppo di activities custom con Workflow Foundation

4 pagine in totale: <<Indietro 1 2 [3] 4 Avanti >>

Dove differiscono le Dependency Properties dalle Properties normali?

Dovrebbe essere già abbastanza chiaro che le Dependency Properties hanno delle funzionalità in più rispetto alle proprietà normali.

Per prima cosa, queste possono essere utilizzate con delle ActivityBind in modo tale da poter ottenere il loro valore durante l'esecuzione del workflow ed effettuare il bind di tale valore sulle proprietà delle activity presenti nel flusso. In questo modo non dobbiamo preoccuparci di scrivere il codice per l'inizializzazione delle variabili, per la loro valorizzazione o per la loro sincronizzazione.
Inoltre, queste possono contenere dei metadati, cioè delle informazioni aggiuntive, cosa che le proprietà standard non consentono.

Le Depedency Properties nello sviluppo di un'activity custom

Il fulcro di tutto è rappresentato dalla classe DependencyProperty, di cui va inserito un membro statico per ogni proprietà che si vuole rendere disponibile per il bind di informazioni, all'interno della classe che rappresenta la nostra attività personalizzata.

public partial class SendMail : SequenceActivity
{
    // metadata properties
    public static readonly DependencyProperty FromProperty;
    // properties for activitybind
    public static DependencyProperty ToProperty;
    public static DependencyProperty SubjectProperty;
    public static DependencyProperty BodyProperty;
    // attached properties
    public static readonly DependencyProperty MailServerProperty;

...
}

Queste proprietà di dipendenza, vanno poi collegate all'activity che le contiene, specificando a quale proprietà sono collegate, il loro tipo di ritorno, e il tipo dell'activity padre, che nel nostro caso sarà l'activity SendMail.
Questa operazione va eseguita all'interno di un costruttore statico dell'activity personalizzata chiamando il metodo Register, proprio della classe DependencyProperty, metodo che non fa altro che creare nuove istanze della classe stessa, sprovvista di un costruttore di default pubblico.

static SendMail()
{
    SendMail.FromProperty = DependencyProperty.Register("From", typeof(string), typeof(SendMail), new PropertyMetadata("info@peppedotnet.it", DependencyPropertyOptions.Metadata));
    SendMail.ToProperty = DependencyProperty.Register("To", typeof(string), typeof(SendMail));
    SendMail.SubjectProperty = DependencyProperty.Register("Subject", typeof(string), typeof(SendMail));
    SendMail.BodyProperty = DependencyProperty.Register("Body", typeof(string), typeof(SendMail));
    SendMail.MailServerProperty = DependencyProperty.RegisterAttached("MailServer", typeof(string), typeof(SendMail), new PropertyMetadata("localhost"));
}

4 pagine in totale: <<Indietro 1 2 [3] 4 Avanti >>

Attenzione: Questo articolo contiene un allegato

Contenuti dell'articolo

Commenti
Dai un voto a questo articolo, ci aiuterà a migliorare il nostro sito (1 è il voto minimo, 5 il massimo).

Per procedere al rating dell'articolo devi essere autenticato.

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.



TUTORIALS


IN EVIDENZA
MISC