ExpressionServices.ConvertReference<TResult> Methode

Definitie

Converteert een verwijzing naar een omgevingsbewuste expressie van een werkstroom naar een activiteitsstructuur.

public:
generic <typename TResult>
 static System::Activities::Activity<System::Activities::Location<TResult> ^> ^ ConvertReference(System::Linq::Expressions::Expression<Func<System::Activities::ActivityContext ^, TResult> ^> ^ expression);
public static System.Activities.Activity<System.Activities.Location<TResult>> ConvertReference<TResult>(System.Linq.Expressions.Expression<Func<System.Activities.ActivityContext,TResult>> expression);
static member ConvertReference : System.Linq.Expressions.Expression<Func<System.Activities.ActivityContext, 'Result>> -> System.Activities.Activity<System.Activities.Location<'Result>>
Public Shared Function ConvertReference(Of TResult) (expression As Expression(Of Func(Of ActivityContext, TResult))) As Activity(Of Location(Of TResult))

Type parameters

TResult

Het type waar de expressie naar wordt geconverteerd.

Parameters

expression
Expression<Func<ActivityContext,TResult>>

De expressie die wordt geconverteerd.

Retouren

Activity<Location<TResult>>

De geconverteerde expressie.

Voorbeelden

De volgende twee codevoorbeelden illustreren het gebruik van ConvertReference en Convert. In het eerste codevoorbeeld wordt ConvertReference in een activiteit een Assign lambda-expressie geconverteerd naar een tekenreekseigenschap waaraan een waarde is toegewezen. Convert Vervolgens wordt aangeroepen om een lambda-expressie te converteren naar een tekenreekseigenschapswaarde die wordt afgedrukt naar de console in de WriteLine activiteit.

// Define a struct with a property named AProperty.
struct StructWithProperty
{
    public string AProperty { get; set; }
}

public static void ConvertReferenceForValueTypePropertyReferenceSample()
{
    // Create a variable of type StructWithProperty to store the property.
    var swpvar = new Variable<StructWithProperty>("swpvar", new StructWithProperty());

    Activity myActivity = new Sequence
    {
        Variables = { swpvar },
        Activities =
        {
            // Create an Assign activity to assign a value to the AProperty property.
            new Assign<string>
            {
                To = ExpressionServices.ConvertReference<string>(ctx => swpvar.Get(ctx).AProperty),
                // Assign a string literal to AProperty.
                Value = "Hello",
            },
            // Print the new property value to the console.
            new WriteLine()
            {
                Text = ExpressionServices.Convert<string>(ctx => swpvar.Get(ctx).AProperty),
            }
        }
    };

    // Invoke the Sequence activity.
    WorkflowInvoker.Invoke(myActivity);
}

Het volgende codevoorbeeld is vergelijkbaar met de vorige, behalve dat de expressie die moet worden geconverteerd een verwijzing naar een item in een multidimensionale matrix is.

public static void ConvertReferenceForMultidimensionalArrayItemReferenceSample()
{
    // Create a variable to store a multidimensional array.
    var arrayvar = new Variable<int[,]>("arrayvar", new int[4, 5]);

    Activity myActivity = new Sequence
    {
        Variables = { arrayvar },
        Activities =
        {
            // Create an Assign activity to assign a value to the array item at index [1,2].
            new Assign<int>
            {
                To = ExpressionServices.ConvertReference<int>(ctx => arrayvar.Get(ctx)[1, 2]),
                // Assign an integer value to the array item at row 1 column 2.
                Value = 1,
            },
            // Print the array item value to the console.
            new WriteLine()
            {
                Text = ExpressionServices.Convert<string>(ctx => arrayvar.Get(ctx)[1, 2].ToString()),
            }
        }
    };

    // Invoke the Sequence activity.
    WorkflowInvoker.Invoke(myActivity);
}

Opmerkingen

De conversiemethoden in ExpressionServices zijn ontworpen om te werken met variabelen en constanten die in de werkstroom zijn gedefinieerd of die via argumenten in de werkstroom worden doorgegeven.

Van toepassing op