私は次のことを達成する方法があるかどうか疑問に思いました:
私のプロジェクトでは、インターフェースを定義しました。たとえば、IFruitです。このインターフェイスには、パブリックメソッドGetName()があります。また、IFruitを実装し、GetAppleType()などの他のメソッドを公開するインターフェイスIAppleを宣言します。IBanana、ICherryなどの果物は他にもあります。
さて、外側では、IFruit自体ではなく、実際のフルーツの実装のみを使用できるようにしたいと思います。ただし、継承されたインターフェイスは「基本クラスにアクセスしにくいため実装できない」と表示されるため、IFruitインターフェイスをプライベートまたは内部として宣言することはできません。
私はこれが抽象的な実装で可能であることを知っていますが、この場合はオプションではありません。私は本当にインターフェースを使用する必要があります。そのようなオプションはありますか?
更新 私の例にはいくつかの説明が必要だと思います:)私はMEFを使用してインターフェース実装をロードします。ロードされたコレクションは、IApple、IBanana、ICherryなどに基づいています。しかし、IFruit自体は役に立たないため、そのインターフェイスのみに基づくクラスを使用することはできません。そこで私は、他の開発者が自分のクラスがロードされる(ロードされない)と考えて、IFruitだけを実装しないようにする方法を探していました。つまり、基本的には次のようになります。
internal interface IFruit
{
public string GetName();
}
public interface IApple : IFruit
{
public decimal GetDiameter();
}
public interface IBanana : IFruit
{
public decimal GetLenght();
}
ただし、ベースインターフェイスにアクセスしにくいため、コンパイルされません。