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();

    }
}

我想从我的表单访问 ie ImportRoute 函数,但我无法访问这个函数,并且发生了这样的错误: 无法创建抽象类或接口的实例 如何访问这些函数?

4

2 回答 2

3

您需要有一个定义实际行为的接口的实现。接口本身只声明成员 - 正如您所看到的,那里没有代码可以说明要做什么。

Form可以创建某个实现的实例,也可以将其提供给它 - 很可能只是作为一个IRoutesManager, 以便表单本身不需要关心它正在使用哪个实现。

于 2012-06-16T09:59:30.933 回答
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();

}

如果您希望它是一个类,您还可以将单词接口更改为类。

于 2012-06-16T10:00:42.727 回答