私は次のインターフェースを持っています:
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);
}
私はこれらの3つが同じではないことを理解しています:
IRelativeTo<>
IRelativeTo<AdminRateShift>
IRelativeTo<IObject>
それでも、すべてIRelativeToを実装する必要があるAdminRateShift(およびFXRateShift、DetRateShift)などのさまざまなクラスすべてを操作する方法が必要です。AdminRateShiftをオブジェクトとして返す関数があるとしましょう。
IRelativeTo<IObject> = getObjectThatImplementsRelativeTo(); // returns Object
インターフェイスに対してプログラミングすることで、必要なことを実行できますが、実際にはオブジェクトをIRelativeToにキャストできないため、使用できます。
些細な例ですが、私がやろうとしていることを明確にしてくれることを願っています。