2

私はシンプルなインターフェースを持っています:

public interface IVisitorsLogController  
{
    List<VisitorsLog> GetVisitorsLog();
    int GetUniqueSubscribersCount();
    int GetVisitorsCount();
    string GetVisitorsSummary();
}

クラス VisitorLogController はこのインターフェースを実装します。

コンソール アプリケーションまたは TestFixture から - 問題ありません - コンソール/テスト フィクスチャは完全にコンパイルされます。

ただし、コード ビハインドにこのコードを含む同じソリューションの Asp.Net Web サイト (アプリケーションではない) から

private IVisitorsLogController ctl;

protected int GetUniqueMembersCount()
{
    ctl = new VisitorsLogController();
    return ctl.GetUniqueSubscribersCount();        
}

コンパイラは次の例外をスローします。

エラー 1 'WebSiteBusinessRules.Interfaces.IVisitorsLogController' には 'GetUniqueSubscribersCount' の定義が含まれておらず、タイプ 'WebSiteBusinessRules.Interfaces.IVisitorsLogController' の最初の引数を受け入れる拡張メソッド 'GetUniqueSubscribersCount' が見つかりませんでした (using ディレクティブまたはアセンブリ参照?)

同じファイル内のこのコードの場合:

  protected static int GetVisitorsCount()
{
    return VisitorsLogController.Instance.GetVisitorsCount(DateTime.Today);
}

コンパイラは文句を言わずにこれらの行をコンパイルします。実際、インターフェイスに何か新しいものを追加すると、コンパイラは asp.net ページをコンパイルしようとすると文句を言うようになりました。

using ディレクティブまたはアセンブリ参照が欠落している可能性はありません。そうしないと、両方のメソッドが失敗します。

これは私を夢中にさせています!

何か考えはありますか?

ありがとう、

ジェレミー

4

4 に答える 4

1

興味深いことに、次の行をコンパイルできますか。

ctl = VisitorsLogController.Instance;

? どういうわけか、同じ名前のインターフェイスが 2 つあるのではないかと思っています。

入力して-ctl.を押すと、Intellisense は何を表示しますか?CtrlSpace

于 2008-10-21T18:15:31.527 に答える
0

もう 1 つの重要なコードは、VisitorsLogController だと思いませんか? VisitorLogController が別のIVistorsLogController インターフェイスを実装しているようです。

右クリックと GoTo Definition で問題が解決すると思います。

于 2008-10-21T18:42:24.407 に答える
0

関連する各ファイルの名前空間をチェックすることから始め、予期しない競合や名前空間がないことを確認します。

于 2008-10-21T17:58:40.157 に答える
0

このソリューションには、Web サイトと 3 つのクラス プロジェクト (データ層、サービス層、およびコア サービス) が含まれています。それらはプロジェクトとして Web サイトへの参照として追加されます。リリースのためにある時点でソリューションをコンパイルしました-サイトを公開し、構成をデバッグに変更しました。

どうやら、Web サイトの /bin ファイル内のリリース dll が新しいデバッグ dll によって上書きされていないことが原因でした。/bin ディレクトリ内のすべてのファイルを手動で削除したところ、見よ、すべてが完全にコンパイルされました。

つまり、Mark と John - あなたは両方とも的を射ていました - 私は事実上、同じ名前の 2 つのインターフェースを持っていました。

あなたの助けに感謝します - もしあなたが私にこれらの指針を与えてくれなかったら、私は最終的にそれを解決することはなかったでしょう.

于 2008-10-21T21:03:30.907 に答える