在派生自泛型基类的"非泛型"子类上实现接口时遇到了一些问题:

    public class Parent<T> where T : struct, Enum
    {
    }

    public class Child : Parent<MyEnum>
    {
    }

    interface ISomeInterface<T> where T : struct, Enum
    {
        void SomeMethod(Parent<T> parent);
    }

    class SomeClass : ISomeInterface<MyEnum>
    {
        public void SomeMethod(Child child)
        {
            return;
        }
    }

它不会编译,因为"SomeClass不实现接口..."

当我更改为

   public void SomeMethod(Parent<MyEnum> child)

百事大吉.

但第一个代码不也应该起作用吗,因为Child实际上是Parent<MyEnum>

推荐答案

我猜您假设在实现接口方法时继承的工作原理与使用父类调用方法相同.他们是不同的.

Csharp相关问答推荐

在Microsoft XNA框架(MonoGame)中旋转相机

在包含空项的列表上使用具有断言T的摘要表

为什么这个Reflection. Emit代码会导致一个DDL ViolationException?

. NET Core DB vs JSON模型设计

(乌龙)1&#比c#中的UL&#慢吗?

C#EF Core 8.0表现与预期不符

MongoDB.NET-将数据绑定到模型类,但无法读取整数值

需要在重新启动ApplicartionPool或IIS后启动/唤醒API的帮助

Amazon SP-API确认发货不设置&Quot;递送服务

由于POST中的应用程序/JWT,出现不支持的内容类型异常

在C#中反序列化/序列化具有混合元素顺序的XML时出现问题

BFF到具有AAD/Entra ID B2C的内部API(.NET/ASP.NET核心/标识.Web)

在PostgreSQL上使用ExecuteSqlRawAsync的C#11原始字符串文字有区分大小写的问题

实体框架-IsRequired()与OnDelete()

ReadOnlyMemory访问基础索引的替代方案

实体框架允许您具有筛选的属性吗?

同时通过多个IEumable<;T&>枚举

LINQ在GROUP BY和JOIN之后获取子列表

如何在C#中用Serilog记录类路径、方法名和行编号

在Blazor中动态隐藏MUD文本