微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 泛型和接口问题

给出以下类和接口:

public class Test<T>
{
}

public interface ITesting<T>
{
    Test<T> Loadtest();
}

我可以添加一个具有以下内容的类:

public class TestManager : ITesting<object>
{
    #region ITesting

    public Test<object> Loadtest()
    {
        return new Test<object>();
    }

    #endregion
}

哪个工作正常,并没有错误.如果我尝试用以下内容替换该类:

public class TestDerived : Test<object>
{
}

public class TestDerivedManager : ITesting<object>
{
    #region ITesting

    public TestDerived Loadtest()
    {
        return new TestDerived();
    }

    #endregion
}

我现在收到以下错误

Error   'TestDerivedManager' does not implement interface member 'ITesting.Loadtest()'. 'TestDerivedManager.Loadtest()' cannot implement 'ITesting.Loadtest()' because it does not have the matching return type of 'Test'.

但对我来说,似乎这应该起作用,因为TestDerived是Test< object>.我显然在这里没有正确理解.有人可能会指出我为何不正确的细节吗?也许我可能会做些什么来纠正它?

解决方法

您想要的功能称为返回类型协方差.它是c的一个特性,但不是c#的特征,所以你必须做错误所说的.

我建议你做一个调用你的公共方法的显式接口实现.这样你就可以获得两全其美.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐