相关疑难解决方法(0)

将对象转换为通用接口

我有以下界面:

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,所以我可以使用它.

这是一个微不足道的例子,但我希望它能澄清我想要做的事情.

c# generics casting interface

25
推荐指数
3
解决办法
2万
查看次数

标签 统计

c# ×1

casting ×1

generics ×1

interface ×1