关于接口:不实现接口成员

时间:2021-03-18 13:21:53
我看到一个DLL,在类继承其接口后,将函数声明为virtual类型。
这样可行是因为,函数签名的后面直接带分号结尾。限于两种情况:
1:纯虚函数,没有方法内容的;
2:外部函数,Extern。

于是我也这样写了一个,却报错说不实现接口,不知其因。
接口部分:
public interface IManageProvider
    {
        void AddCurrent(IManageUser user);
        IManageUser Current();
        void EmptyCurrent();
        bool IsOverdue();
    }

继承的类:  
public class ManageProvider : IManageProvider
    {        
        public virtual void AddCurrent(IManageUser user);      
        public virtual void EmptyCurrent();
        public virtual bool IsOverdue();
    }

11 个解决方案

#1


 IManageUser存在么?既然继承了,ManageProvider 中的EmptyCurrent等 应该有方法体;

#2


关于接口:不实现接口成员

#3


你说的可能是 抽象类的情况吧 关于接口:不实现接口成员

public interface A
    {
        void T1();
    }

    public abstract class B : A
    {
        public abstract void T1();
    }

    public class C : B
    {
        public override void T1() { Console.WriteLine(111); }
    }

#4


关于接口:不实现接口成员

#5


 版主, IManageUser Current(),另外文件有实现。

#6


我都写成这样了,还不行,提示要声明主体
一、接口
   public interface IManageProvider
    {
        void AddCurrent();    
        void EmptyCurrent();
        bool IsOverdue();
    }

二、继承类
 public class ManageProvider : IManageProvider
    {
        void AddCurrent();   
        public virtual void EmptyCurrent();
        public virtual bool IsOverdue();
    }

#7


上面敲错了,是这样的:

二、继承类
 public class ManageProvider : IManageProvider
    {
        public  virtual  void AddCurrent();   
        public virtual void EmptyCurrent();
        public virtual bool IsOverdue();
    }
[/color]

#8


    public class ManageProvider : IManageProvider
    {
        public  virtual  void AddCurrent() {}
        public virtual void EmptyCurrent() {}
        public virtual bool IsOverdue() {}
    }
既然你不打算实现接口方法,那么为何要声明实现接口?
注意: : IManageProvider 不是继承!

#9


额,不是我不实现,而是我在一个dll中看到的,觉得奇怪,于是摘下来测试下。
他这里面也末见实现,为何不报错呢?
关于接口:不实现接口成员

#10


不是没有实现,只是人家编译成dll了啊。你看不到具体代码而已。右上角 从元数据看到吗
关于接口:不实现接口成员

#11


明白了,老大,因为我没有在这个文件看到实现,又不见报错,才有疑惑的 关于接口:不实现接口成员

#1


 IManageUser存在么?既然继承了,ManageProvider 中的EmptyCurrent等 应该有方法体;

#2


关于接口:不实现接口成员

#3


你说的可能是 抽象类的情况吧 关于接口:不实现接口成员

public interface A
    {
        void T1();
    }

    public abstract class B : A
    {
        public abstract void T1();
    }

    public class C : B
    {
        public override void T1() { Console.WriteLine(111); }
    }

#4


关于接口:不实现接口成员

#5


 版主, IManageUser Current(),另外文件有实现。

#6


我都写成这样了,还不行,提示要声明主体
一、接口
   public interface IManageProvider
    {
        void AddCurrent();    
        void EmptyCurrent();
        bool IsOverdue();
    }

二、继承类
 public class ManageProvider : IManageProvider
    {
        void AddCurrent();   
        public virtual void EmptyCurrent();
        public virtual bool IsOverdue();
    }

#7


上面敲错了,是这样的:

二、继承类
 public class ManageProvider : IManageProvider
    {
        public  virtual  void AddCurrent();   
        public virtual void EmptyCurrent();
        public virtual bool IsOverdue();
    }
[/color]

#8


    public class ManageProvider : IManageProvider
    {
        public  virtual  void AddCurrent() {}
        public virtual void EmptyCurrent() {}
        public virtual bool IsOverdue() {}
    }
既然你不打算实现接口方法,那么为何要声明实现接口?
注意: : IManageProvider 不是继承!

#9


额,不是我不实现,而是我在一个dll中看到的,觉得奇怪,于是摘下来测试下。
他这里面也末见实现,为何不报错呢?
关于接口:不实现接口成员

#10


不是没有实现,只是人家编译成dll了啊。你看不到具体代码而已。右上角 从元数据看到吗
关于接口:不实现接口成员

#11


明白了,老大,因为我没有在这个文件看到实现,又不见报错,才有疑惑的 关于接口:不实现接口成员