다음을 통해 공유


사용자 지정 형식의 Switch 활동 사용 방법

이 항목은 Windows Workflow Foundation 4에 적용됩니다.

이 샘플에서는 Switch 활동을 사용하도록 설정하여 런타임에 사용자 정의 복합 형식을 계산하는 방법에 대해 설명합니다. 대부분의 일반적인 절차적 프로그래밍 언어에서 switch 문은 변수의 조건부 계산에 따라 실행 논리를 선택합니다. 일반적으로 switch 문은 정적으로 계산할 수 있는 식에 대해 작동합니다. 예를 들어 C#에서는 Boolean, Int32, String 등의 기본 형식과 열거형 형식만 지원됩니다.

사용자 지정 클래스에서 전환을 사용하도록 설정하려면 런타임에 사용자 지정 복합 형식 값을 계산하도록 논리를 구현해야 합니다. 이 샘플에서는 Person이라는 사용자 지정 복합 형식에서 전환을 사용하도록 설정하는 방법을 보여 줍니다.

  • 사용자 지정 클래스 Person에서 TypeConverter 특성은 사용자 지정 TypeConverter의 이름으로 선언됩니다.

    [TypeConverter(typeof(PersonConverter))]
    public class Person
    {
       public string Name { get; set; }
       public int Age { get; set; }
    ...
    
  • 사용자 지정 클래스 Person에서 Equals 및 GetHashCode 클래스가 재정의됩니다.

    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;
    }
    
  • 사용자 지정 TypeConverter 클래스는 사용자 지정 클래스의 인스턴스에서 문자열로 또는 문자열에서 사용자 지정 클래스의 인스턴스로 변환하도록 구현됩니다.

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

이 샘플에 포함되어 있는 파일은 다음과 같습니다.

  • Person.cs: Person 클래스를 정의합니다.

  • PersonConverter.cs: Person 클래스의 형식 변환기입니다.

  • Sequence.xaml: Person 형식에 대해 전환되는 워크플로입니다.

  • Program.cs: 워크플로를 실행하는 main 함수입니다.

이 샘플을 사용하려면

  1. Visual Studio 2010에서 Switch.sln을 로드합니다.

  2. F6 키를 눌러 솔루션을 빌드합니다.

  3. Ctrl+F5를 눌러 샘플을 실행합니다.

Ee624141.Important(ko-kr,VS.100).gif 참고:
컴퓨터에 이 샘플이 이미 설치되어 있을 수도 있습니다. 계속하기 전에 다음(기본) 디렉터리를 확인하십시오.

<InstallDrive>:\WF_WCF_Samples

이 디렉터리가 없으면 Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4로 이동하여 WCF(Windows Communication Foundation) 및 WF 샘플을 모두 다운로드하십시오. 이 샘플은 다음 디렉터리에 있습니다.

<InstallDrive>:\WF_WCF_Samples\WF\Basic\Built-InActivities\Switch

참고 항목

개념

.NET Framework 4 기본 제공 활동 라이브러리