[c#] 제네릭 클래스의 타입 제약

예를 들어, 특정 인터페이스를 구현한 클래스만을 제네릭 타입으로 허용하고 싶다면, 다음과 같이 제네릭 클래스를 작성합니다.

public class SampleClass<T> where T : ISampleInterface
{
    // 클래스 구현
}

위의 예시에서 ‘where T : ISampleInterface’ 구문은 T가 ISampleInterface를 구현한 타입에 제약을 두는 것을 의미합니다. 이를 통해 SampleClass를 인스턴스화할 때 T는 ISampleInterface를 구현한 타입으로 제한됩니다.

또 다른 예로, 특정 클래스의 파생 클래스만을 허용하고 싶다면, 다음과 같이 제네릭 클래스를 작성할 수 있습니다.

public class SampleClass<T> where T : SampleBaseClass
{
    // 클래스 구현
}

위의 예시는 T가 SampleBaseClass 클래스를 상속한 타입에 제약을 두는 것을 보여줍니다.

이와 같이 ‘where’ 키워드를 사용하여 제네릭 클래스의 타입에 제약을 설정함으로써 코드의 안정성을 높일 수 있습니다.