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 関数にアクセスしたいのですが、この関数にアクセスできず、次のようなエラーが発生しました: 抽象クラスまたはインターフェイスのインスタンスを作成できません これらの関数にアクセスするにはどうすればよいですか?

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 に答える