2016-11-10 4 views
1

Dynamics AX2012의 메서드 super()를 사용하여 프로그래밍하고 싶습니다.슈퍼 메서드 사용

클래스 ("A")와 일부 메소드를 빌드했습니다. 나는 다른 반 ("B")을 ​​만든다.
수업 "A"에 몇 가지 방법이 있습니다. 클래스 "B"에서 메서드를 재정의하고 싶습니다. 나 그렇게 할거야. getTable() 메서드를 재정의합니다.

protected SYCCarBrandTable getTable() 
{ 
    SYCCarBrandTable ret; 

    ret = super(); 
    { 
     select brandid,branddescription from ret 
     where ret.brandid == "Bentley"; 
    } 

    return ret; 
} 

지금 내 질문

나는 슈퍼에()이 새로운 방법은 그것이 motherclass "A"의에서 확장하는 방법에서, 그것으로 모든 것을 가지고 않았다는 것을 이해 ...입니다.

하지만 메소드에 더 많은 것들을 추가 할 수있어서 이전에 메소드의 것들과 오버라이드 된 메소드에 추가 한 것들을 제공합니까?

+0

'A.getTable'의 내용을 보여줄 수 있습니까? –

답변

0

getTable()의 구현을 보면 super()가 반환 한 다른 SYCCarBrandTable의 값을 기준으로 + 새롭게 추가 된 조건을 사용하여 일부 SYCCarBrandTable 레코드를 선택하는 것처럼 보입니다.

왜 그런 일을하고 싶은지 잘 모르겠지만 동일한 테이블 변수에 대해 select 문을 수행하면 아무 것도 추가하지 않고 모든 동작을 실제로 무시하고 있습니다. 내가 왜 그런 일이 유용 것이 확실하지 않다, 그런 다음 다시

protected SYCCarBrandTable getTable() 
{ 
    SYCCarBrandTable superCar; 
    SYCCarBrandTable ret; 

    superCar = super(); 

    select brandid,branddescription from ret 
     where ret.CriteriaA = superCar.CriteriaA 
     && ret.brandid == "Bentley"; 

    return ret; 
} 

을, 그러나 이것은 하나 개의 샘플 방법 : 바로 그것을 가지고있는 경우

, 다른 SYCCarBrandTable을 사용할 수 있습니다 기능을 완전히 재정의하는 대신 집계하는 방법에 대해 설명합니다.

0

선택 항목에 critria를 추가하려면 쿼리 개체를 사용하고 선택을 디자인해야합니다. 기본 클래스에서 modifieQuery() 또는 setQueryRange()와 같은 새로운 메서드를 만들어야합니다. 이 방법에서는 기본 클래스에 대해 원하는대로 범위를 쿼리에 추가합니다. 클래스 "B"에서이 메서드를 재정의 할 때 super를 호출하고 추가 범위를 추가하거나 super()없이 메서드를 재정의하고 필요에 따라 범위를 설정하기 만하면됩니다. 기본 클래스의 getTable 메서드에서 modifieQuery()를 호출하고 실행합니다.