티스토리 뷰

IT/C#

[CS] 자식 인스턴스를 이용하여 특정 클래스를 상속받았는지 확인하기

주인장 진빼이

자식 인스턴스를 이용하여 특정 클래스를 상속받았는지 확인하기

  • 상황
    • 버튼을 커스터마이징 한다고 하자. 특정 클래스(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
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함