在C#中实现通用接口

拉吉·莱卡(Raj Lekkala)

我们如何继承泛型接口的泛型类?我已经尝试下面的代码并得到错误消息:“ Bc未实现接口成员'ConsoleApplication3.iB.showval(int,int)”。如何解决?

interface iB<X, Y> 
{
    void storeval(X p1,Y p2);
    void getval();
}
class Bc<X,Y>:iB<int,int>
{
    private X _dm1;
    private Y _dm2;
    public void storeval(X p1,Y p2) 
    {
        this._dm1 = p1;
        this._dm2 = p2;
    }
    public void getval() 
    {
        Console.WriteLine("{0}\t{1}",this._dm1,this._dm2);
    }
}
class Program
{
    static void Main(string[] args)
    {
        Bc<string, bool> b1 = new Bc<string, bool>();
        b1.storeval("AppScienti",true);
        b1.getval();
        Console.ReadKey();
    }
}
谢尔盖·卡里尼琴科(Sergey Kalinichenko)

您的代码没有继承通用接口,而是继承了通用接口的完整定义实例。

既然继承了iB<int,int>,就需要实现

public void storeval(int p1, int p2) {
    ...
}

或者,您可以继承iB<X,Y>,在这种情况下,您的接口实现将有效:

class Bc<X,Y> : iB<X,Y> {
    ...
}

无论哪种情况,依赖于通用接口的类型参数的接口方法的参数都必须与您在继承接口时指定的类型参数相匹配。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章