接口作为c#中方法中的参数

本文关键字:方法 参数 接口 | 更新日期: 2023-09-27 18:21:44

我定义了一个接口IActivity,然后创建了两个类,将该接口实现为

public class EngagementActivity : IActivity...

public class MPEngagementActivity : IActivity...

然后,我创建了一个方法,将活动保存到数据库中,如下所示

public void SaveActivity (IActivity activity)

我遇到的问题是,当我将类型为EngagementActivityMPEngagementActivity的参数传递给此方法时,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)"的最佳重载方法匹配包含一些无效参数

接口作为c#中方法中的参数

如果IActivity是命名空间中的类,而不是类似于Microsoft.Uml.Activities.IAccitivity

的类,请检查SaveActivity(IActivity activity)的声明

根据您提供的信息You are not doing anything wrong。一定是别的东西。重新启动Visual Studio的最佳方式:)

您的类Implements IActivity接口,则它们可以作为IActivity接口传递。我们为实现polymorphism做了这个基本的OOPS概念——我不知道做了多少次。

所以这是另一回事。

我忘记实现接口的一个成员。。。啊!

感谢所有的回复。