我有以下界面:
internal interface IRelativeTo<T> where T : IObject
{
T getRelativeTo();
void setRelativeTo(T relativeTo);
}
Run Code Online (Sandbox Code Playgroud)
和一堆(应该)实现它的类,例如:
public class AdminRateShift : IObject, IRelativeTo<AdminRateShift>
{
AdminRateShift getRelativeTo();
void setRelativeTo(AdminRateShift shift);
}
Run Code Online (Sandbox Code Playgroud)
我意识到这三个不一样:
IRelativeTo<>
IRelativeTo<AdminRateShift>
IRelativeTo<IObject>
Run Code Online (Sandbox Code Playgroud)
但是,我需要一种方法来处理所有不同的类,如AdminRateShift(和FXRateShift,DetRateShift),它们都应该实现IRelativeTo.假设我有一个函数将AdminRateShift作为Object返回:
IRelativeTo<IObject> = getObjectThatImplementsRelativeTo(); // returns Object
Run Code Online (Sandbox Code Playgroud)
通过对接口进行编程,我可以做我需要的,但我实际上无法将对象转换为IRelativeTo,所以我可以使用它.
这是一个微不足道的例子,但我希望它能澄清我想要做的事情.