我试图在两个表单之间传递一个对象(基本上是对当前登录用户的引用)。目前,我在登录表单中有一些东西:

private ACTInterface oActInterface;

public void button1_Click(object sender, EventArgs e)
    {
        oActInterface = new ACTInterface(@"\\actserver\Database\Premier.pad",this.textUser.Text,this.textPass.Text);

        if (oActInterface.checkLoggedIn())
        {
            //user has authed against ACT, so we can carry on
            clients oClientForm = new clients(oActInterface);
            this.Hide();
            oClientForm.Show();
        }
        else...

在下一个表格(客户)上,我有:

public partial class clients : Form
{
    private ACTInterface oActInt {get; set;}

    public clients(ACTInterface _oActInt)

...这导致我得到:

Error   1   Inconsistent accessibility: 
parameter type 'support.ACTInterface' is less accessible than method    
'support.clients.clients(support.ACTInterface)'  
c:\work\net\backup\support\support\clients.cs   20  16  support

我真的不明白问题是什么-这两个字段都是私有的,并且由相关的公共方法从表单访问。谷歌搜索并没有真正的帮助,因为它只是指出一个元素是公共的,另一个是私有的,这不是这里的情况。

有人帮助吗?


当前回答

试着让你的构造函数像这样私有:

private Foo newClass = new Foo();

其他回答

所有将ActInterface类型设置为public的答案都是正确的。我写这篇文章只是为了明确地说明为什么这是一个问题

如果公共类构造函数的形参是私有或内部限定类,这意味着您不能从程序集外部创建该形参类的对象,并且当您无法实例化形参对象时,如何调用此构造函数来实例化该类的对象呢?

parameter type 'support.ACTInterface' is less accessible than method    
'support.clients.clients(support.ACTInterface)' 

错误显示“支持”。ACTInterface'的可访问性较差,因为你已经将接口设置为私有,至少将其设置为内部或公共。

类型的类定义中,如果要在新表单中使用类变量时发生此错误

Formname.Designer.cs

而不是Formname.cs文件。

试着让你的构造函数像这样私有:

private Foo newClass = new Foo();

你可以把Parameter(类的可访问性较低)作为对象,然后把它作为关键字转换为你的类。