1

2 つのメソッドを持つパブリック インターフェイスがあります。

public interface IClickStrategy : IStrategy
{
        void InsertSending(MailingResult sending, string connectionString, string tableName);
        void InsertClick(ClickResult click, MailingResult mailing, int campaignId, string              connectionString, string tableName);
}

そして、このインターフェイス関数を実装するクラスがあります。したがって、これらの関数を実装すると、正しく配置されますが、もちろん公開されません。

void IClickStrategy.InsertSending(MailingResult sending, string connectionString, string tableName){
...
}

クラスからこの関数を呼び出そうとしていますが、実際には意味のあるエラーが表示されます:

「'InsertSending' という名前は、現在のコンテキストには存在しません。」

私が知りたいのは、クラス内でこれらの関数を使用する方法です? これを行う正しい方法は何ですか?ありがとう。

4

3 に答える 3

8

問題は、明示的なインターフェイスの実装を使用していることです。あなたはそれする必要はありません。あなたはただ書くことができます:

public void InsertSending(...)
{
    ...
}

メソッドを別の場所で通常どおり呼び出します。ただし、明示的なインターフェイス実装を使用する場合は、クラス タイプではなく、インターフェイス タイプの参照を介してのみメソッドを呼び出すことができますしたがって、次を使用できます。

IClickStrategy strategy = this;
strategy.InsertSending(...);

個人的には、本当に正当な理由がない限り、明示的なインターフェイスの実装を使用しないようにしています。私の経験では、これはその一例であり、物事をより複雑にする傾向があります。

于 2013-05-31T07:36:58.007 に答える
1

それは違いない

public void InsertSending(MailingResult sending, string connectionString, string tableName){
...
}

このインターフェイスを実装するように装飾されたクラス内。

于 2013-05-31T07:36:42.903 に答える