2012-06-24 3 views
0

있습니다 인수 유형과 오버로딩 , 의도가 아니었다).나는 이런 식으로 뭔가를베이스와 상속 클래스

여기에 뭔가가 있습니까? 그렇다면 arg as DerivedArg과 같은 이상한 물건을 사용하지 않고 어떻게 다시 작성해야합니까?

+2

재현 할 수 없습니다. 주어진 코드 ('A.DoSomething' 가상으로 만들기 위해 수정 됨) 아래에 * 표시된 코드는'A.Create (DerivedArg)'를 호출합니다. 귀하가 주장하는 것을 실제로 입증하는 짧지 만 완전한 프로그램을 보여주십시오. –

답변

2

정확한 팩토리 메소드가 실행 중입니다. 내부에 중단 점을 설정합니다

A a = A.Create(arg); 

public static B Create(DerivedArg arg)가되고있다 :

public static B Create(DerivedArg arg) 
    { 
     return new B(arg); /* set breakpoint */ 
    } 

그것은 가 나타납니다 당신이 유형 A의 지역 변수를 정의한 이후이 실행되지 않는 것을 당신에 올바르게 호출되고 B 유형의 인스턴스가 반환되고 유형 A으로 박스 처리됩니다.

+0

아니요, 저는 그것에 들어가서'A.Create (BaseArg arg)'가 호출되었습니다. – mnn

관련 문제