ExpressionServices.ConvertReference(Expression<Func<ActivityContext,TResult>>) ExpressionServices.ConvertReference(Expression<Func<ActivityContext,TResult>>) ExpressionServices.ConvertReference(Expression<Func<ActivityContext,TResult>>) ExpressionServices.ConvertReference(Expression<Func<ActivityContext,TResult>>) Method

Определение

Преобразует ссылку на выражение, учитывающее среду рабочего процесса, в дерево действий.Converts a reference to a workflow environment-aware expression to an activity tree.

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))

Параметры типа

TResult

Тип, в который преобразуется выражение.The type the expression is being converted to.

Параметры

expression
Expression<Func<ActivityContext,TResult>>

Выражение для преобразования.The expression being converted.

Возвраты

Activity<Location<TResult>>

Преобразованное выражение.The converted expression.

Примеры

В следующих двух примерах кода показано использование методов ConvertReference и Convert.The following two code examples illustrate the use of ConvertReference and Convert. В первом примере кода используется метод ConvertReference в действии Assign для преобразования лямбда-выражения в строковое свойство, которому присваивается значение.The first code example uses ConvertReference in an Assign activity to convert a lambda expression into a string property that is assigned a value. Затем вызывается метод Convert для преобразования лямбда-выражения в значение строкового свойства, выводимого на консоль в действии WriteLine.Next, Convert is called to convert a lambda expression into a string property value that is printed to the console in the WriteLine activity.


// 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);  
}  

Следующий пример кода похож на предыдущий с той разницей, что преобразуемое выражение является ссылкой на элемент в многомерном массиве.The following code example is like the previous one except that the expression to convert is a reference to an item in a multidimensional array.


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);  
}  

Комментарии

Методы преобразования в ExpressionServices предназначены для работы с переменными и константами, определенными в рабочем процессе или переданными в рабочий процесс в виде аргументов.The conversion methods in ExpressionServices are designed to work with variables and constants defined inside the workflow, or passed into the workflow via arguments.

Применяется к