interface作为c#中方法的参数

时间:2014-09-11 22:20:30

标签: c# interface

我已经定义了一个接口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)的最佳重载方法匹配'有一些无效的论点

3 个答案:

答案 0 :(得分:5)

检查 SaveActivity(IActivity活动)的声明,如果 IActivity 是来自命名空间的类,并且不是 Microsoft.VisualStudio.Uml.Activities .IAcitivity

答案 1 :(得分:1)

根据您提供的信息You are not doing anything wrong。它必须是别的东西。最好的方法是重新启动Visual Studio:)

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

所以这是另一回事。

答案 2 :(得分:1)

我忘了实现界面的其中一个成员......呃!

感谢所有回复。