参数约束以实现两个接口

The*_*ger 5 c# generics abap

我想了解Abap-的一些运作OO

在C#中,可以通过泛型中的约束将类型限制为任何类型,但至少符合某些(多个)接口,方法是:

where T : IAmInterfaceA, IAmInterfaceB
Run Code Online (Sandbox Code Playgroud)

是否可以在abap-oo中将其存档?我想将任何对象作为参数传递给符合两个接口的方法。


例如,我想拥有这两个接口:

  • 利伐利特
  • 可保存

我不想有一个额外的接口,将这两个分别提供的方法结合在一起。

例如,可能有一个经理类想要保存对象,但仅当对象有效时:

Manager.Save(/* <object that conforms to both interfaces IValidate and ISaveable> */ );
Run Code Online (Sandbox Code Playgroud)

因此,如果我有一个简单的类SimpleData : IValidate, ISaveable,可以将该类的对象传递给方法,但是ISaveable不能传递仅实现该类的另一个对象。

在C#中,我只是将save方法定义为通用方法:

static bool Save<T>(T dataObject) where T : IValidate, ISaveable { /* ... */ }
Run Code Online (Sandbox Code Playgroud)

如果可能,如何在abap-oo中执行此操作?

vwe*_*ert 4

在 ABAP 中,您必须创建一个组合接口或在运行时检查条件(我不建议这样做)。您只能对参数使用单一类型。据我所知,像您引用的那样更复杂的约束是不可能的。