如何在没有 .NET 接口继承的情况下在静态类中实现接口方法

本文关键字:接口 静态类 情况下 实现 方法 继承 NET | 更新日期: 2023-09-27 18:32:55

接口 :

public interface IArrayOperation
{
    int GetElement(int index);        
    bool IndexCheck(int index);
}

静态类:

public static class TestArray
{
    public static int GetArrayLength(IArrayOperation arrayOperation)
    {
        // Implement your logic here.
        // I need to implement interface method over here.
        throw new NotImplementedException();
    }
}

在这里,我想在静态类方法GetArrayLength()中实现这两个接口方法。

我不想实现接口,但我已将接口作为静态类方法中的参数传递。

感谢任何帮助或指导。

如何在没有 .NET 接口继承的情况下在静态类中实现接口方法

如果没有派生类,则无法实现接口方法。但是,如果接口提供了足够的基本功能,则可以通过扩展方法将派生信息添加到接口。

对于数组,您可以使用接口方法IndexCheck并通过检查最后一个有效索引来派生数组长度。

public interface IArrayOperation
{       
    bool IndexCheck(int index);
}
public static class TestArray
{
    public static int GetArrayLength(this IArrayOperation arrayOperation)
    {
        int len = 0;
        while (arrayOperation.IndexCheck(len)) { ++len; }
        return len;
    }
}

或者你可以有一个数组长度并派生索引检查

public interface IArrayOperation
{       
    int GetArrayLength();
}
public static class TestArray
{
    public static bool IndexCheck(this IArrayOperation arrayOperation, int index)
    {
        return index >= 0 && index < arrayOperation.GetArrayLength();
    }
}
在这两种

情况下,您以后都可以在这两种方法中使用 IArrayOperation 变量

IArrayOperation instance = /* some concrete derived class */;
bool checkResult = instance.IndexCheck(0);
int lengthResult = instance.GetArrayLength();

派生类实例需要实现实际属于接口一部分的方法,但扩展方法在没有每个实例实现的情况下可用。