메서드 호출의 매개 변수를 두 개의 다른 클래스 중 하나로 제한하려고합니다. 가능한지 또는 공통 기본 클래스에서 두 클래스를 모두 상속해야하는지 모르겠습니다.
지금까지 사용하고 있지만이 유형을 안전하게 만들고 싶습니다.
public static AdoptionApplicationCollection GetApplicationsByApplicant (object applicant)
{
if (applicant.GetType() == typeof(Person))
{
// blah
}
else if (applicant.GetType() == typeof(Organization))
{
// blah
}
// A whole lot more blah
}
신청자를 Person 또는 Organization 유형의 제네릭으로 만들고 싶습니다 .
내 원래 답변에 추가하면 패턴 일치 라는 질문의 코드에서 수행하는 작업을 수행하는 또 다른 방법이 있습니다 . if
s 를 사용하는 대신 C#
이 추악한 유형없이 유형을 캐스팅하고 확인하는 단축키가 있습니다.typeof()
public static AdoptionApplicationCollection GetApplicationsByApplicant (object applicant)
{
switch(applicant)
{
case Person p:
Console.WriteLine("The person is " + p);
break;
case Organization o:
Console.WriteLine("The organization is " + o);
break;
}
}
이 Person
경우 p
객체는 applicant
자동으로 Person
유형 으로 캐스팅됩니다 . 에서 Organization
의 경우는이 o
될 것입니다 applicant
자동으로 주조 Organization
유형입니다. 이것은 코드를 훨씬 더 읽기 쉽게 만들 수있는 매우 유용하고 편리한 도구입니다. 그냥이 있다고 염두에 두어야 C # 7.0 그래서 당신이 해당 버전 이상에있는 확인 기능을 제공합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다