티스토리 뷰
자식 인스턴스를 이용하여 특정 클래스를 상속받았는지 확인하기
- 상황
- 버튼을 커스터마이징 한다고 하자. 특정 클래스(Button)을 상속받은 확장 컨트롤(ButtonEx)가 존재한다.
이때 다음 코드를 통해 자식 인스턴스(myBtn1)에서 특정 부모 클래스를 상속받은지 조건문으로 판별할 수 있다.
예시에서는 컨트롤 인스턴스라고 표현했으나, 굳이 컨트롤이 아니어도 상관이 없다.
단, 반드시 상속 관계이거나 해당 인스턴스의 타입을 구할 때 사용하도록 하자.
is 연산자는 C# 7.0부터 지원한다.
if (typeof(BaseType).IsInstanceOfType(derivedControlInstance) == true)
if (typeof(ParentType).IsInstanceOfType(childControlInstance) == true)
if (typeof(Button).IsInstanceOfType(myBtn1) == true) // myBtn1 타입은 ButtonEx이다.
if (ChildIControlInstance is Button == true)
if (myBtn1 is Button == true)
그리고 자식 인스턴스에 BaseType 부모 타입의 이름을 구할 수 있다.
typeof(B).BaseType.Name
typeof(instance.GetType()).BaseType.Name
댓글