接口作为c#中方法中的参数
本文关键字:方法 参数 接口 | 更新日期: 2023-09-27 18:21:44
我定义了一个接口IActivity
,然后创建了两个类,将该接口实现为
public class EngagementActivity : IActivity...
和
public class MPEngagementActivity : IActivity...
然后,我创建了一个方法,将活动保存到数据库中,如下所示
public void SaveActivity (IActivity activity)
我遇到的问题是,当我将类型为EngagementActivity
或MPEngagementActivity
的参数传递给此方法时,Visual Studio会抱怨类型不匹配。
我做错了吗?
这是呼叫代码(我知道不完整…)
public ActionResult UpdateEngagementActivityRecord(EngagementActivityViewModel model)
{
if (ModelState.IsValid)
{
svc.SaveActivityRecord(model.Activity);
//Redirect to Index?
}
InitialiseEngagementActivityViewModel(model);
return View(model);
}
这是的方法(不完整)
internal void SaveActivityRecord(IActivity model)
{
Activity record = new Activity();
if (model != null)
{
dbContext.Activities.Add(record);
Save();
}
}
错误消息是:
SaveActivityRecord(IActivity)"的最佳重载方法匹配包含一些无效参数
如果IActivity是命名空间中的类,而不是类似于Microsoft.Uml.Activities.IAccitivity
根据您提供的信息You are not doing anything wrong
。一定是别的东西。重新启动Visual Studio的最佳方式:)
您的类Implements IActivity
接口,则它们可以作为IActivity接口传递。我们为实现polymorphism
做了这个基本的OOPS概念——我不知道做了多少次。
所以这是另一回事。
我忘记实现接口的一个成员。。。啊!
感谢所有的回复。