0

您好,我的申请有问题。

我创建了一个新的UserControl调用EntityOverviewPanel来直观地显示有关另一个类的信息Entity
为了创建这个 UserControl 的实例,我想传递一个实例,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)'

我的实体看起来像这样(由于它的大小,只是类的一部分^^)

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 Entitypublic class Entity可以解决此问题,但它并没有这样做,而是创建了一大堆与其他用途相关的新错误Entity(与标题中相同的错误消息)。

关于如何解决这个问题的任何想法?提前致谢 :)

4

1 回答 1

1

是的 - 要么你需要Entity公开,要么你的setEntity方法(听起来你正在编写 Java 而不是 C#)在内部。更改EntityOverviewPanel为内部也可以解决它,IIRC。

从根本上说,您不能在具有内部参数或返回类型的公共类中拥有公共方法。这样做没有任何意义。

如果Entity公开导致进一步的问题,那可能只是因为你需要对其他类型做同样的事情。您确实需要确定您是否希望及其Entity相关类型是公开的。如果你不想公开,你为什么要setEntity公开?

于 2012-09-29T18:07:25.413 回答