您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關WF4.0 Beta2中的Switch<T>是什么,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
對于微軟的WF工作流,很多開發人員都有過接觸。對于新版的WF4.0 Beta2,有許多新特性值得我們去開發和體驗。這些新特性能給我們帶來事半功倍的效果。
Switch<T>是WF4.0中新增的活動。功能類似于C#語言中的Switch語句,但是C#的Switch語句只能是一般的Int,String等類型。在WF4.0中Switch<T>可以使用
用于自定義的復雜類型。下面例子完成根據不同的Person執行不同的分支。
1.下面是Person類,在Person類中我們必須要重寫Equals方法和GetHashCode方法,代碼如下:
[TypeConverter(typeof(PersonConverter))] public class Person { public string Name { get; set; } public int Age { get; set; } public Person() { this.Age = 15; } public Person(string name, int age) { this.Name = name; this.Age = age; } public Person(string name) : this() { this.Name = name; } 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; } }
2.TypeConverter 類是.NET提供的類型換器 就是將一種類型(object,可以說是任何類型)轉換到另一種類型(一般為string),或者將另一種類型轉換回來。
我們實現上面的Person的PersonConverter,如下:
public class PersonConverter : TypeConverter { public override bool CanConvertFrom(ITypeDescriptorContext context,Type sourceType) { return (sourceType == typeof(string)); } 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); } 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); } }
3.工作流設計如下:
3.1.定義一個Person類型的變量p1,Scope為Sequence。
3.2.工作流設計中首先是一個Assign活動來實例化p1,然后在Switc<Person>中根據p1的不同值來判斷走不同的分支。
3.3.運行程序結果為:Hello Cary。
關于“WF4.0 Beta2中的Switch<T>是什么”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。