2014-09-11 14 views
1

я определил интерфейс IActivity, а затем создал два класса, которые реализуют этот интерфейс, какинтерфейс в качестве параметра метода в C#

public class EngagementActivity : IActivity... 

и

public class MPEngagementActivity : IActivity... 

Я тогда создал метод, чтобы сохранить деятельность в базе данных следующим образом:

public void SaveActivity (IActivity activity) 

Проблема, с которой я столкнулась, - это at, когда я передаю параметр типа 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) имеет некоторые недопустимые аргументы

+0

Просьба показать объявление «EngagementActivityViewModel.Activity». –

ответ

1

В соответствии с предоставленной информацией You are not doing anything wrong. Это должно быть что-то еще. Лучший способ перезапустить Visual Studio :)

Ваши классы Implements IActivity Интерфейс тогда они могут передаваться как интерфейс IActivity. Мы сделали эту основную концепцию OOPS для внедрения polymorphism - Я не знаю, сколько раз.

Так что это что-то еще.

5

Проверка декларации вашего SaveActivity (IActivity активность) если IActivity класс из пространства имен, а не что-то вроде Microsoft.VisualStudio.Uml.Activities.IAcitivity

1

Я забыл реализовать один из членов интерфейса ... duh!

Спасибо за все ответы.

+0

Вы не получали предупреждение - что реализовать всех участников? – loop

Смежные вопросы