Share via


Come generare codice utilizzando attività personalizzate

È possibile generare codice per un'attività personalizzata tramite un tipo derivato da ActivityCodeGenerator o CompositeActivityCodeGenerator e associandolo all'attività personalizzata utilizzando ActivityCodeGeneratorAttribute. È necessario eseguire l'override di GenerateCode, che sarà chiamato durante la compilazione del flusso di lavoro e che consentirà di aggiungere codice alla classe parziale del flusso di lavoro che viene generata dal compilatore, sotto forma di CodeDOM, prima di passare al compilatore C#. Questo scenario può rivelarsi utile per le attività dei servizi Web, dove è possibile generare una classe proxy immediatamente, oppure in altri scenari dove l'attività deve generare codice sulla base della configurazione per l'utilizzo a runtime.

Nell'esempio seguente viene illustrato come generare codice da un'attività personalizzata.

public override void GenerateCode(CodeGenerationManager manager, object obj)
{
    if (manager == null)
    {
        throw new ArgumentNullException("The CodeGenerationManager object is null.");
    }

    if (obj == null)
    {
        throw new ArgumentNullException("The object to generate code for is null.");
    }

    // Cast obj to your custom activity for access to its members.
    Activity1 customActivity = obj as Activity1;

    if (customActivity == null)
    {
        throw new ArgumentException("The obj variable cannot be cast to the Activity type.");
    }

    // Retrieve a type provider object.
    ITypeProvider typeProvider = (ITypeProvider)manager.GetService(typeof(ITypeProvider));

    if (typeProvider == null)
    {
        throw new InvalidOperationException();
    }

    // TODO: Use types in the System.CodeDOM namespace to generate 
    // code. 
}

Per associare il proprio generatore di codice all'attività personalizzata, è necessario decorare l'attività con ActivityCodeGeneratorAttribute, come mostrato nell'esempio seguente.

[ActivityCodeGenerator(typeof(CustomCodeGenerator))]

Per ulteriori informazioni sull'utilizzo di CodeDOM, vedere Using the CodeDOM.

Nota

Non è necessario utilizzare CodeDomProvider o alcuno dei compilatori CodeDOM nello spazio dei nomi System.CodeDOM.Compiler quando si utilizza CodeDOM nell'implementazione personalizzata di ActivityCodeGenerator.

Vedere anche

Concetti

Creazione di attività personalizzate

Altre risorse

Sviluppo di attività flusso di lavoro

Footer image

Copyright © 2007 Microsoft Corporation. Tutti i diritti riservati.