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