2014-11-19 6 views
4

Abap-OO의 일부 동작을 이해하려고합니다. 이 ABAP에서 동일하게 보관하는 것이 가능두 인터페이스를 구현하는 매개 변수에 대한 제약

where T : IAmInterfaceA, IAmInterfaceB 

을 :

C#에서 어떤 종류의 수 있지만 수행하여 적어도 제네릭 제약 조건을 통해 특정 (여러) 인터페이스에 부합하는 유형을 제한 할 수 있습니다 - 응? 두 개의 인터페이스를 준수하는 메서드에 매개 변수로 모든 개체를 전달하고 싶습니다.


예를 들어 나는 그 두 개의 인터페이스를 갖고 싶어 :

  • IValidate을
  • ISaveable

내가 그 두 별도로 제공하는 방법을 결합 여분의 인터페이스를 가지고 싶지 않아 .

것은 예를 들어 있지만, 객체를 저장하고자하는 관리자 클래스가있을 수 그들은 유효한 경우에만 선택 :이 클래스의 SimpleData : IValidate, ISaveable 객체 같은 간단한 클래스로 전달 될 수있어 경우에 따라서

Manager.Save(/* <object that conforms to both interfaces IValidate and ISaveable> */); 

.

static bool Save<T>(T dataObject) where T : IValidate, ISaveable { /* ... */ } 
: 방법하지만 그 클래스에만 ISaveable이 전달 될 수 없습니다 구현하는 다른 객체

C#에서 나는 단순히이 일반적인 방법으로 저장 방법 정의 할

가능하면 abap-oo에서이를 수행하는 방법?

답변

3

ABAP에서 결합 인터페이스를 만들거나 실행시 조건을 확인해야합니다 (이는 권장하지 않음). 매개 변수에는 하나의 유형 만 사용할 수 있습니다. 인용 한 것과 같은 더 복잡한 제약 조건은 내가 아는 한 가능하지 않습니다.

+1

더욱 복잡한 제약 조건이있을 수 있다면 나는 그것을지지 할 것인지 확신하지 못합니다. +1 – tomdemuyt

관련 문제