2012-06-16 3 views
1

У меня есть интерфейс вроде этого:Как создать экземпляр интерфейса (доступ к интерфейсу)

namespace QuickRoutes.Model.Utilities 
{ 
    public interface IRoutesManager 
    { 
     bool ImportRoute(Stream inputStream, string fileName); 
     List<Route> GetAllRoutes(); 
     List<Route> GetAllRoutesForDate(DateTime from, DateTime to); 
     void DeleteRoute(string routeName); 
     void DeleteAllRoutes(); 

    } 
} 

, и я хочу, чтобы получить доступ к т.е. функции ImportRoute от моей формы, но я не могу доступ к этой функции и ошибка произошла следующим образом: не может создать экземпляр абстрактного класса или интерфейса Как я могу получить доступ к этим функциям?

+2

Я думаю, вам нужно изучить концепции OOPS. –

ответ

3

У вас должен быть интерфейс интерфейса, который определяет фактическое поведение. Сам интерфейс только объявляет участников - как вы можете видеть, там нет кода, чтобы сказать, что делать.

Ваш Form может либо создать экземпляр какой-то реализации, или дать его - вполне возможно, только как IRoutesManager, так что форма сама по себе не нужно заботиться о том, реализация которых он использует.

1

Вы никогда не создаете экземпляры интерфейсов, интерфейсы - это просто контракты. Что вы могли бы сделать это: -

public class MyRouteManager : IRoutesManager 
{ 
    bool ImportRoute(Stream inputStream, string fileName) 
    { code here etc etc } 
    List<Route> GetAllRoutes(); 
    List<Route> GetAllRoutesForDate(DateTime from, DateTime to); 
    void DeleteRoute(string routeName); 
    void DeleteAllRoutes(); 

} 

Вы coudl также изменить интерфейс слово в класс, если его класс вы хотите вместо этого.

+0

Да, вы правы, Джон. – Sunny

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