Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieses Thema gilt für Windows Workflow Foundation 4.
Dieses Beispiel zeigt, wie eine Switch-Aktivität aktiviert wird, um zur Laufzeit einen benutzerdefinierten komplexen Typ auszuwerten. In den meisten herkömmlichen prozeduralen Programmiersprachen wird mit einer switch-Anweisung auf Grundlage der bedingten Auswertung einer Variable eine Ausführungslogik ausgewählt. Normalerweise wird eine switch-Anweisung auf einen Ausdruck angewendet, der statisch ausgewertet werden kann. In C# bedeutet dies z. B., dass nur primitive Typen wie Boolean, Int32 oder String und Enumerationstypen unterstützt werden.
Um die switch-Funktion für eine benutzerdefinierte Klasse zu aktivieren, muss Logik zur Auswertung des komplexen benutzerdefinierten Typs zur Laufzeit implementiert werden. In diesem Beispiel wird veranschaulicht, wie die switch-Funktion für einen benutzerdefinierten komplexen Typ mit dem Namen Person aktiviert wird.
In der benutzerdefinierten Klasse
Personwird ein TypeConverter-Attribut mit dem Namen des benutzerdefinierten TypeConverter deklariert.[TypeConverter(typeof(PersonConverter))] public class Person { public string Name { get; set; } public int Age { get; set; } ...In der benutzerdefinierten Klasse
Personwerden die Equals-Klasse und die GetHashCode-Klasse überschrieben.public override bool Equals(object obj) { Person person = obj as Person; if (person != null) { return string.Equals(this.Name, person.Name); } return false; } public override int GetHashCode() { if (this.Name != null) { return this.Name.GetHashCode(); } return 0; }Eine benutzerdefinierte TypeConverter-Klasse wird implementiert. Diese führt die Konvertierung einer Instanz der benutzerdefinierten Klasse in eine Zeichenfolge sowie die Konvertierung einer Zeichenfolge in eine Instanz der benutzerdefinierten Klasse aus.
public class PersonConverter : TypeConverter { public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) { return (sourceType is string); } // Overrides the ConvertFrom method of TypeConverter. public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) { if (value == null) { return null; } if (value is string) { return new Person { Name = (string)value }; } return base.ConvertFrom(context, culture, value); } // Overrides the ConvertTo method of TypeConverter. public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) { if (destinationType == typeof(string)) { if (value != null) { return ((Person) value).Name; } else { return null; } } return base.ConvertTo(context, culture, value, destinationType); } }
Die folgenden Dateien sind in diesem Projekt enthalten:
Person.cs: Definiert die
Person-Klasse.PersonConverter.cs: Der Typkonverter für die
Person-Klasse.Sequence.xaml: Ein Workflow, der den
Person-Typ umschaltet.Program.cs: Die Hauptfunktion, die den Workflow ausführt.
So verwenden Sie dieses Beispiel
Laden Sie "Switch.sln" in Visual Studio 2010.
Drücken Sie F6, um die Projektmappe zu erstellen.
Drücken Sie STRG+F5, um das Beispiel auszuführen.
Hinweis: |
|---|
Die Beispiele sind möglicherweise bereits auf dem Computer installiert. Überprüfen Sie das folgende (standardmäßige) Verzeichnis, bevor Sie fortfahren.
<Installationslaufwerk>:\WF_WCF_Samples
Wenn dieses Verzeichnis nicht vorhanden ist, rufen Sie Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 auf, um alle Windows Communication Foundation (WCF)- und WF-Beispiele herunterzuladen. Dieses Beispiel befindet sich im folgenden Verzeichnis.
<Installationslaufwerk>:\WF_WCF_Samples\WF\Basic\Built-InActivities\Switch
|
Hinweis: