4. 1 Candidate 클래스 구현

Candidate 클래스를 추가하세요.

Candidate 클래스는 수집할 대상 사이트를 표현할 클래스입니다. 먼저 클래스의 노출 수준을 public으로 설정합니다. 라이브러리에 정의한 형식을 다른 곳에서 사용하려면 노출 수준을 public으로 설정해야 합니다. 그리고 서비스에서 직렬화하여 사용할 수도 있으니 Serializable 특성을 지정합시다.

[Serializable]    
public class Candidate
{
}

Candidate 클래스에는 멤버 속성으로 사이트 주소와 Seed 사이트 주소에서의 상대적 깊이를 설정하고 가져오기 가능한 멤버가 필요합니다. 노출 수준을 public으로 지정하여 멤버 속성 Url과 Depth를 추가합니다. 가져오기와 설정하기가 가능한 형태의 멤버 속성으로 정의하세요.

public string Url
{
    get;
    set;
}
public int Depth
{
    get;
    set;
}

기본 생성자를 정의합시다. Url은 string.Empty로 지정하고 Depth는 0으로 지정할게요.

public Candidate()
{
    Url = string.Empty;
    Depth = 0;
}

입력 인자로 사이트 주소와 Depth를 인자로 받는 생성자도 정의합시다.

public Candidate(string url,int depth)
{
    Url = url;
    Depth = depth;
}

ToString 메서드를 재정의하여 Url을 반환하게 정의합시다. 여러분께서 형식을 정의할 때 ToString 메서드를 재정의하는 습관을 갖는다면 사용하기 편해집니다.

public override string ToString()
{
    return Url;
}

이제 빌드하면 공개한 멤버 혹은 형식에 XML 주석이 없다는 경고를 확인하실 수 있습니다. public으로 노출한 멤버와 형식에 XML 주석을 작성하세요.

/// <summary>
/// 수집할 대상 사이트
/// </summary>
[Serializable]
public class Candidate
{
    /// <summary>
    /// 사이트 주소
    /// 가져오기 및 설정하기
    /// </summary>
    public string Url
    {
        get;
        set;
    }
    ...중략...
}

▷Candidate.cs

using System;
 
namespace WSE_Core
{
    /// <summary>
    /// 수집할 대상 사이트
    /// </summary>
    [Serializable]
    public class Candidate
    {
        /// <summary>
        /// 사이트 주소
        /// 가져오기 및 설정하기
        /// </summary>
        public string Url
        {           
            get;
            set;
        }

        /// <summary>
        /// Seed 사이트에서의 상대적 거리
        /// 가져오기 및 설정하기
        /// </summary>
        public int Depth
        {
            get;
            set;
        }

        /// <summary>
        /// 기본 생성자
        /// </summary>
        public Candidate()
        {
            Url = string.Empty;
            Depth = 0;
        }

        /// <summary>
        /// 생성자     
        /// </summary>
        /// <param name="url">사이트 주소</param>
        /// <param name="depth">Seed 사이트에서 상대적 깊이</param>
        public Candidate(string url,int depth)
        {
            Url = url;
            Depth = depth;
        }

        /// <summary>
        /// ToString 재정의
        /// </summary>
        /// <returns>사이트 주소</returns>
        public override string ToString()
        {
            return Url;
        }
    }
}