Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# 익명 타입으로 인터페이스를 구현할 수 있을까? 특징과 대안까지 완벽 정리

결론: C# 익명 타입은 인터페이스를 구현할 수 없습니다

결론부터 말씀드리면, C#의 익명 타입(anonymous type)은 인터페이스를 구현할 수 없습니다. 따라서 인터페이스를 구현해야 하는 상황이라면 직접 클래스를 정의해서 사용해야 합니다.

익명 타입(Anonymous Type)이란?

익명 타입은 별도의 타입을 미리 정의하지 않고도 읽기 전용(read-only) 속성들을 하나의 객체로 묶을 수 있는 편리한 기능입니다. 간단한 데이터를 임시로 담거나 LINQ 쿼리 결과를 즉석에서 만들어야 할 때 특히 유용합니다.

익명 타입의 이름은 컴파일러가 자동으로 생성하며, 소스 코드 수준에서는 이 이름에 접근할 수 없습니다. 또한 각 속성의 타입 역시 개발자가 지정하는 것이 아니라 컴파일러가 할당된 값을 기준으로 자동으로 추론(infer)합니다.

익명 타입 생성 방법

익명 타입은 new 연산자와 객체 이니셜라이저(object initializer)를 함께 사용하여 생성합니다. 아래 예제를 살펴보겠습니다.

예제 코드

class Program{
    public static void Main(){
        var v = new { Amount = 108, Message = "Test" };
        Console.WriteLine(v.Amount + v.Message);
        Console.ReadLine();
    }
}

실행 결과

108Test

인터페이스 구현이 필요하다면? 대안 정리

익명 타입으로는 인터페이스 구현이 불가능하기 때문에, 다음과 같은 대안을 고려하는 것이 좋습니다.

  • 명명된 클래스(named class) 정의: 가장 기본적인 방법으로, 필요한 인터페이스를 상속·구현하는 일반 클래스를 직접 작성합니다.
  • 레코드(record) 활용: C# 9.0 이상에서는 record를 사용하면 불변 데이터 객체를 짧은 코드로 정의하면서 인터페이스도 구현할 수 있습니다.
  • 델리게이트나 람다식 활용: 단일 메서드만 필요한 경우라면 인터페이스 대신 Func<T>, Action 같은 델리게이트로 대체할 수 있습니다.

정리

익명 타입은 컴파일러가 자동으로 타입을 생성해 주는 편리한 기능이지만, 그만큼 확장성에는 제약이 있습니다. 인터페이스 구현이나 상속이 필요한 설계라면 반드시 명시적인 타입을 정의해야 하며, 단순히 데이터를 임시로 묶는 용도라면 익명 타입이 여전히 훌륭한 선택입니다.