实现两个接口的参数约束

时间:2014-11-19 10:09:47

标签: c# generics abap

我正在尝试了解Abap- OO 的一些工作原理。

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

where T : IAmInterfaceA, IAmInterfaceB

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


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

  • IValidate
  • ISaveable

我不希望有一个额外的接口,将两者分别提供的方法结合起来。

例如,可能有一个想要保存对象的管理器类,但前提是它们是有效的:

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

因此,如果我得到一个像SimpleData : IValidate, ISaveable这样的简单类,则可以将此类的对象传递给该方法,但不能传入其类只实现ISaveable的另一个对象。

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

static bool Save<T>(T dataObject) where T : IValidate, ISaveable { /* ... */ }

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

1 个答案:

答案 0 :(得分:3)

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