. net类接口,继承和库:错误没有实现接口成员

本文关键字:接口 错误 实现 成员 继承 net | 更新日期: 2023-09-27 17:51:20

我想这样做(我在silverlight上,但没有什么特别的所以我想在winform和wpf上也这样做)

namespace MyComponents
{
    public class IMyManager : ILibManager
    {
        void SetModel(ILibModel model);
    }
}

但是得到这个错误

错误2 'MyComponents。没有实现接口成员'lib.manager.ILibManager.SetModel(lib.model.ILibModel)'。'MyComponents.IMymanager.SetModel(lib.model.ILibModel)'不能实现接口成员,因为它不是公共的。C:…'MyComponents'MyComponents'IMymanager.cs 17 18 MyComponents

为什么?这是Lib

中的代码
using lib.model;
using System;
using System.Collections.Generic;
using System.Text;
namespace lib.manager
{
    public interface ILibManager
    {
        public void SetModel(ILibModel model);
    }
}
using lib.model;
using System;
using System.Net;
using System.Windows;

namespace lib.manager
{
    public class Manager: IManager
    {
        // Constructor
        public Manager() { 
        }
        public void SetModel(ILibModel model) {
        }
    }
}
namespace lib.model
{
    public interface ILibModel
    {
    }
}

namespace lib.model
{
    public class Model : ILibModel
    {
    }
}

. net类接口,继承和库:错误没有实现接口成员

我相信你这里有两个错误,是吗?应该有一个错误说SetModel应该有一个主体,因为IMyManager不是一个接口或抽象类!

所以,我相信你应该为那个方法有一个主体,然后它必须是"公共的",因为它是接口实现的一部分。你还应该将IMyManager重命名为"MyManager",因为它不是一个界面。你的类应该是这样的:

public class MyManager : ILibManager
{
    public void SetModel(ILibModel model)
    {
        // implementation of SetModel
    }
}

希望这对你有帮助

试试这个:

namespace MyComponents
{
    public class MyManager : ILibManager
    {
        public void SetModel(ILibModel model)
        {
           // ...
        }
    }
}

符合接口(契约!)的类必须以公共的方式实现它。

您也可以尝试显式实现,例如:

public class MyManager : ILibManager
{
    void ILibManager:SetModel(ILibModel model)
    {
        // ...
    }
}