0

このエラーが発生し、それを修正する方法を確認しています。Default1 から継承するローダー クラスを作成し、それをメソッドで使用しようとしています。

namespace MyLevel
{
    class Default1
    {
        public interface Default1
        {
            IEnumerable<DefaultCore> GetDefaultValues();
        }
    }
}

どんな助けでも大歓迎

4

4 に答える 4

3

インターフェイスを定義および/または実装する方法について、ここで混乱していると思います。

そこにあるのは、という名前のクラスですDefault1。これは、名前の付いた内部のネストされたインターフェースを定義していますDefault1。これには 3 つの問題があります。

  1. それはできません。名前が曖昧になる可能性があるため、名前を同じにすることはできません。エラーメッセージはここでかなり明確でした。(他の人が述べているように、インターフェースは通常ISomething、名前の競合を解決する と呼ばれます。

  2. そのインターフェースは奇妙な方法で定義されています。内部(@FishBasketGordoに思い出させてくれてありがとう!)クラス内にネストされています。つまり、定義したアセンブリ内でのみ表示され、次のように参照する必要がありますDefault1.IDefault(名前を修正したと仮定します)。

  3. インターフェイスを実際に実装しているものはないため、どこでも使用されていません。

インターフェースを定義したい場合、クラスは必要ありません:

namespace MyLevel
{
    public interface IDefault
    {
        IEnumerable<DefaultCore> GetDefaultValues();
    }
}

クラスにそのインターフェースを実装したい場合:

namespace MyLevel
{
    public class Default1 : IDefault
    {
        public IEnumerable<DefaultCore> GetDefaultValues() { }
    }
}
于 2012-05-03T21:46:22.110 に答える
1

クラス内でインターフェイスを定義したため、それはクラスのメンバーであり、クラスは同じ名前の 2 つのメンバーを持つことも、クラス自体と同じ名前のメンバーを持つこともできません。それがエラーメッセージが言っていることです。

したがって、Default1(クラス) またはDefault1(インターフェース) の名前を変更します。

ほとんどのインターフェイスにはI、慣例により大文字のプレフィックスが付いているIDefault1ため、インターフェイスに適しています。また、これとは無関係に、なぜクラス内でインターフェイスを定義するのですか?

于 2012-05-03T21:42:45.263 に答える
1

If you want the class to inherit the interface, it needs to be outside of the class. Secondly, utilize standard naming conventions and prefix the interface name with an I ( e.g. IDefault, ICloneable, IDisposable, etc.):

namespace MyLevel
{
    public class Default : IDefault
    {

    }

    public interface IDefault
    {
        IEnumerable<DefaultCore> GetDefaultValues();            
    }
}
于 2012-05-03T21:47:48.197 に答える
-1

あなたのコードは評価されていません。

インターフェイスは(通常の)Iで始まる

ビルドの要件ではありませんが、LAW としては一般的です

IDefault に行くだけです!

プラシャント:)

于 2012-05-03T21:45:02.847 に答える