Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Windows Workflow Foundation (WF) ifadesi, sonuç döndüren herhangi bir etkinliktir. Tüm ifade etkinlikleri, etkinliğin dönüş değeri olarak adlandırılan Activity<TResult> bir OutArgument özelliği içeren Result'den dolaylı olarak türetilir. WF, işleç etkinlikleri aracılığıyla tek bir iş akışı değişkenine erişim sağlayan basit VariableValue<T> ve VariableReference<T> etkinliklerinden, sonucu üretmek için Visual Basic dilinin tüm genişliğine erişim sağlayan VisualBasicReference<TResult> ve VisualBasicValue<TResult> gibi karmaşık etkinliklere kadar çok çeşitli ifade etkinlikleriyle birlikte gelir. CodeActivity<TResult> veya NativeActivity<TResult>'den türetilerek ek ifade etkinlikleri oluşturulabilir.
İfadeleri Kullanma
İş akışı tasarımcısı, Visual Basic projelerindeki tüm ifadeler için VisualBasicValue<TResult> ve VisualBasicReference<TResult>, C# iş akışı projelerindeki ifadeler için ise CSharpValue<TResult> ve CSharpReference<TResult> kullanır.
Uyarı
İş akışı projelerindeki C# ifadeleri desteği .NET Framework 4.5'te sunulmuştur. Daha fazla bilgi için bkz . C# İfadeleri.
Tasarımcı tarafından üretilen iş akışları, aşağıdaki örnekte olduğu gibi ifadelerin köşeli ayraç içinde göründüğü XAML'ye kaydedilir.
<Sequence xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Sequence.Variables>
<Variable x:TypeArguments="x:Int32" Default="1" Name="a" />
<Variable x:TypeArguments="x:Int32" Default="2" Name="b" />
<Variable x:TypeArguments="x:Int32" Default="3" Name="c" />
<Variable x:TypeArguments="x:Int32" Default="0" Name="r" />
</Sequence.Variables>
<Assign>
<Assign.To>
<OutArgument x:TypeArguments="x:Int32">[r]</OutArgument>
</Assign.To>
<Assign.Value>
<InArgument x:TypeArguments="x:Int32">[a + b + c]</InArgument>
</Assign.Value>
</Assign>
</Sequence>
Kodda bir iş akışı tanımlarken, tüm ifade etkinlikleri kullanılabilir. Aşağıdaki örnekte, üç sayı eklemek için işleç etkinliklerinin bileşiminin kullanımı gösterilmektedir:
Variable<int> a = new Variable<int>("a", 1);
Variable<int> b = new Variable<int>("b", 2);
Variable<int> c = new Variable<int>("c", 3);
Variable<int> r = new Variable<int>("r", 0);
Sequence w = new Sequence
{
Variables = { a, b, c, r },
Activities =
{
new Assign {
To = new OutArgument<int>(r),
Value = new InArgument<int> {
Expression = new Add<int, int, int> {
Left = new Add<int, int, int> {
Left = new InArgument<int>(a),
Right = new InArgument<int>(b)
},
Right = new InArgument<int>(c)
}
}
}
}
};
Aynı iş akışı, aşağıdaki örnekte gösterildiği gibi C# lambda ifadeleri kullanılarak daha küçük bir şekilde ifade edilebilir:
Variable<int> a = new Variable<int>("a", 1);
Variable<int> b = new Variable<int>("b", 2);
Variable<int> c = new Variable<int>("c", 3);
Variable<int> r = new Variable<int>("r", 0);
Sequence w = new Sequence
{
Variables = { a, b, c, r },
Activities =
{
new Assign {
To = new OutArgument<int>(r),
Value = new InArgument<int>((ctx) => a.Get(ctx) + b.Get(ctx) + c.Get(ctx))
}
}
};
Özel İfade Etkinlikleriyle Kullanılabilir İfadeleri Genişletme
.NET Framework 4.6.1'deki ifadeler, ek ifade etkinliklerinin oluşturulmasına olanak sağlayan genişletilebilir. Aşağıdaki örnekte üç tamsayı değerinin toplamını döndüren bir etkinlik gösterilmektedir.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Activities;
namespace ExpressionsDemo
{
public sealed class AddThreeValues : CodeActivity<int>
{
public InArgument<int> Value1 { get; set; }
public InArgument<int> Value2 { get; set; }
public InArgument<int> Value3 { get; set; }
protected override int Execute(CodeActivityContext context)
{
return Value1.Get(context) +
Value2.Get(context) +
Value3.Get(context);
}
}
}
Bu yeni etkinlikle, aşağıdaki örnekte gösterildiği gibi üç değer ekleyen önceki iş akışını yeniden yazabilirsiniz:
Variable<int> a = new Variable<int>("a", 1);
Variable<int> b = new Variable<int>("b", 2);
Variable<int> c = new Variable<int>("c", 3);
Variable<int> r = new Variable<int>("r", 0);
Sequence w = new Sequence
{
Variables = { a, b, c, r },
Activities =
{
new Assign {
To = new OutArgument<int>(r),
Value = new InArgument<int> {
Expression = new AddThreeValues() {
Value1 = new InArgument<int>(a),
Value2 = new InArgument<int>(b),
Value3 = new InArgument<int>(c)
}
}
}
}
};
Kodda ifadeleri kullanma hakkında daha fazla bilgi için bkz. Kesinlik Temelli Kod Kullanarak İş Akışları, Etkinlikler ve İfadeler Yazma.