. 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
{
}
}
我相信你这里有两个错误,是吗?应该有一个错误说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)
{
// ...
}
}