그래, 다음을하려고합니다 :메소드 오버로드 : 파생 클래스 인수 오버로드에 대한 퍼널 호출
protected bool ValidAdvert(Base item)
{
throw ThisIsAnAbstractClassException();
}
protected bool ValidAdvert(Derived1 item)
{
return ADerived1SpecificPredicate;
}
protected bool ValidAdvert(Derived2 item)
{
return ADerived2SpecificPredicate;
}
그리고 메서드의 파생 클래스 버전을 호출 할 때, 기본 클래스가 메서드에 전달됩니다. 기본 클래스는 추상적이므로 이것이 이론적으로 가능해야합니까?
누군가가 클래스 자체에서 메소드를 오버로드하기 전에 클래스 내부의 논리는 많은 다른 조건에 의존하며 그 중 아무 것도 관련이 없으며 Base/Derived 클래스와 직접적으로 관련이 없습니다 (로그인 상태 등)
또한 똑똑하고 다양한 파생 클래스를 망칠 필요가 없습니다 (2 개만 있으면 좋겠다!). –
꽤 노트 : 당신은 반환에 bool에 캐스팅해야하고 method.Invoke는 객체의 []를 취합니다. 그래서 당신이 시도하고 그냥 통과하면 :) craps Thanks! –
@Ed - 파생 클래스로 조건부를 유지하는 것이 실제로 바람직한 방법이라고 생각합니다. 파생 클래스 별 논리를 기본 클래스에 저장하면이 두 클래스간에 역방향 연결이 생성됩니다. 나는 이것을 전혀 좋은 것으로 보지 않는다. 기본 클래스는 파생 클래스에 대해 알 필요가 없습니다. – tvanfosson