1

こんにちは、私はこのようなプラグインインターフェースを作りました

 public  interface IPluginInterface :IEquatable<IPluginInterface>
{
    string Maker { get; }
    string Version { get; }  
    void Do();
    void Do_two();
}

試してみましたが、文字列 Maker と Version をオプションにする方法が見つかりませんでした。ブール値の Equals を設定する必要があると思いますが、方法がわかりません。ご協力ありがとう御座います

4

4 に答える 4

5

インターフェイスで宣言した場合は、実装する必要があります。

インターフェイスでオプションのメンバーを宣言することはできません。

いくつかのオプションがあります。

  • インターフェイスを 2 つに分割します。必要なものだけを実装してください。
  • 「オプション」メンバーが空で非抽象の抽象クラスを実装します。
于 2012-08-24T10:16:00.933 に答える
1

インターフェイス メソッドをオプションとしてマークすることはできません。インターフェイス全体を実装するか、まったく実装しないかのいずれかです。

代わりに、このインターフェイスを 2 つの異なるインターフェイスに分割することを検討できます。

于 2012-08-24T10:16:48.033 に答える
1

インターフェイスをいくつかに分割します。

public interface IPluginInterface : IEquatable<IPluginInterface>
{
    string Maker { get; }
    string Version { get; }  
}

public interface IPluginWithOptionA : IPluginInterface
{
    void Do();
}

public interface IPluginWithOptionB : IPluginInterface
{
    void Do_two();
}

1つ以上のインターフェースを実装できます

public class MyPlugin : IPluginWithOptionA, IPluginWithOptionB
{
    public bool Equals(IPluginInterface other)
    {
        throw new NotImplementedException();
    }

    public string Maker
    {
        get { throw new NotImplementedException(); }
    }

    public string Version
    {
        get { throw new NotImplementedException(); }
    }

    public void Do_two()
    {
        throw new NotImplementedException();
    }

    public void Do()
    {
        throw new NotImplementedException();
    }
}
于 2012-08-24T10:17:28.617 に答える
0

このメソッドをオプションにしたい場合、インターフェースは間違った方法です。しかし、それらを抽象基本クラスに入れることができます。

于 2012-08-24T10:17:15.397 に答える