interface作为c#中方法的参数

fra*_*res 1 c# interface

我已经定义了一个接口IActivity,然后创建了两个实现此接口的类

public class EngagementActivity : IActivity...
Run Code Online (Sandbox Code Playgroud)

public class MPEngagementActivity : IActivity...
Run Code Online (Sandbox Code Playgroud)

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

public void SaveActivity (IActivity activity)
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,当我传递一个类型的参数EngagementActivityMPEngagementActivity这个方法时,Visual Studio会抱怨不匹配的类型.

我做错了吗?

这是调用代码(我不知道......)

public ActionResult UpdateEngagementActivityRecord(EngagementActivityViewModel model)
{
    if (ModelState.IsValid)
    {
        svc.SaveActivityRecord(model.Activity);
        //Redirect to Index?
    }

    InitialiseEngagementActivityViewModel(model);
    return View(model);
}
Run Code Online (Sandbox Code Playgroud)

这是方法(不完整)

internal void SaveActivityRecord(IActivity model)
{
    Activity record = new Activity();

    if (model != null)
    {

       dbContext.Activities.Add(record);
       Save();
    }
}
Run Code Online (Sandbox Code Playgroud)

错误消息是:

SaveActivityRecord(IActivity)'的最佳重载方法匹配具有一些无效参数

Val*_* P. 5

如果IActivity是您的命名空间中的类,则检查SaveActivity(IActivity活动)的声明,而不是像Microsoft.VisualStudio.Uml.Activities.IAcitivity.