0

こんにちは、アプリケーションで問題が発生しました。

別のクラスに関する情報を視覚的に表示するために、新しいUserControl呼び出しを作成しました。この UserControl のインスタンスを作成するために、すべてのデータでパネルを初期化するために のインスタンスを渡したいと思います。EntityOverviewPanelEntity
Entity

public partial class EntityOverviewPanel : UserControl
{
    private Entity entity;

    public EntityOverviewPanel()
    {
        InitializeComponent();
    }

    public void setEntity(Entity e)
    {
        entity = e;
        updatePanel();
    }

    private void updatePanel()
    {
        //update panel
    }
}

これを実行しようとすると、タイトルに記載されているエラーが発生します。
Inconsistent accessibility: parameter type 'IFCS.Entity' is less accessible than method 'IFCS.EntityOverviewPanel.setEntity(IFCS.Entity)'

私のEntityはこんな感じです(サイズの関係でクラスの一部です^^)

class Entity
{
    public enum Gender
    {
        MALE, FEMALE
    }

    private int id;
    private Gender gender;
    private string surname, forename;
    private Group group;
    private Organisation organisation;
    private Station station;
    private string uid;

    public Entity(string surname, Gender gender, Group group, Role role, string forename = "")
    {
         //code
    }

    //more code
}

class Entityに変更するとこの問題が解決することについて読みましpublic class Entityたが、それを行う代わりに、の他の使用に関連する新しいエラーが大量に作成されますEntity(タイトルと同じエラーメッセージが表示されます)。

これを修正する方法について何か考えはありますか? 前もって感謝します :)

4

1 に答える 1

1

そうです-Entity公開するか、setEntityメソッド(C#ではなくJavaを書いているように聞こえます)を内部にする必要があります。内部に変更EntityOverviewPanelすると、IIRCも修正されます。

基本的に、内部のパラメーターまたは戻り値の型を持つパブリック クラスにパブリック メソッドを含めることはできません。そうしても意味がありません。

public にすることでさらに問題が発生する場合Entity、それはおそらく、同じことを他の型で行う必要があるためです。あなたが望むかどうか、およびそれに関連する型をパブリックにするかどうかを実際に検討する必要がありますEntity。公開したくないのなら、なぜ公開したいsetEntityのですか?

于 2012-09-29T18:07:25.413 に答える