1

你好,我做了一个插件界面,看起来像这样

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

我已经尝试过,但还没有找到任何方法来使字符串 Maker 和 Version 可选,我想我必须设置一个布尔 Equals,但不知道如何。谢谢你的帮助

4

4 回答 4

5

如果您在接口中声明它们,则必须实现它们。

您不能在接口上声明可选成员。

有几个选项供您选择:

  • 将界面分成两部分。只实现你需要的。
  • 实现一个抽象类,其中“可选”成员为空且非抽象。
于 2012-08-24T10:16:00.933 回答
1

您不能将任何接口方法标记为可选 - 要么实现整个接口,要么根本不实现它!

您可以考虑将此接口拆分为两个不同的接口。

于 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();
}

您可以实现一个或多个接口

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 回答