相关疑难解决方法(0)

重写继承方法时避免使用显式类型转换

我有一个基本抽象类,也实现了一个特定的接口.

public interface IMovable<TEntity, T>
    where TEntity: class
    where T: struct
{
    TEntity Move(IMover<T> moverProvider);
}

public abstract class Animal : IMovable<Animal, int>
{
    ...

    public virtual Animal Move(IMover<int> moverProvider)
    {
        // performs movement using provided mover
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我继承了一些类,其中一些必须覆盖基类的接口实现方法.

public class Snake : Animal
{
    ...

    public override Animal Move(IMover<int> moverProvider)
    {
        // perform different movement
    }
}
Run Code Online (Sandbox Code Playgroud)

我的接口方法在移动后返回相同的对象实例,因此我可以使用链接或直接在return语句中执行某些操作而不使用其他变量.

// I don't want this if methods would be void typed
var s = GetMySnake();
s.Move(provider); …
Run Code Online (Sandbox Code Playgroud)

c# generics inheritance interface-implementation

11
推荐指数
1
解决办法
1048
查看次数