首页 文章

可访问性不一致:参数类型比方法更难访问

提问于
浏览
170

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

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

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

有人帮忙吗?

11 回答

  • 8

    尝试将构造函数设为私有,如下所示:

    private Foo newClass = new Foo();
    
  • -2

    public class clients 的构造函数是 public 但是它的 ACTInterface 类型的参数是 private (它嵌套在类中?) . 你不能这样做 . 您需要使 ACTInterface 至少与 clients 一样可访问 .

  • 23

    问题似乎不是变量,而是ACTInterface的声明 . ACTInterface是否被任何机会声明为内部?

  • 1

    如果 ACTInterface 类型的声音不是 public ,而是使用 internal (如果它是顶级)或 private (如果它嵌套在另一种类型中)的默认可访问性 .

    赋予 public 修饰符类型可以修复它 .

    另一种方法是同时制作类型和方法 internal ,如果这是你的意图 .

    问题不在于字段的可访问性( oActInterface ),而在于 ACTInterface 本身的类型 .

  • 262

    更新我的实体框架模型后,我发现此错误感染了我的解决方案中的几个文件 . 我只需右键单击我的.edmx文件和我的TT文件,然后单击“运行自定义工具”,重新启动Visual Studio 2012后,我就再次使用了 .

  • 0

    什么你提供的类ActInterface是私人类,这是它得到错误的方式

    将该类类型更改为它将解析的Public ActInterface

  • 0

    您可以获取参数(具有较少可访问性的类)作为 object ,然后通过 as 关键字将其转换为您的类 .

  • 48

    让课程公开 .

    class NewClass
    {
    
    }
    

    是相同的:

    internal class NewClass
    {
    
    }
    

    所以上课必须公开

  • 0

    当我收到这个错误时,我有一个“帮助器”类,我没有声明为公共,导致在使用“helper”类的类内部出现此问题 . 使“helper”类公开解决了这个错误,如:

    public ServiceClass {public ServiceClass(HelperClass _helper){}}

    public class HelperClass {} //注意解决了我的问题的公共HelperClass .

    这可能会帮助遇到此事的其他人 .

  • 0

    如果要在新表单中使用类变量时发生此错误,则应将类定义放在

    Formname.Designer.cs

    而不是Formname.cs文件 .

  • 4

    support.ACTInterface 类型的可访问性是什么?该错误表明它不公开 .

    如果签名的某些参数类型不公开,则不能公开公共方法签名 . 由于调用者无法构造所需的参数,因此无法从外部调用该方法 .

    如果您使 support.ACTInterface public将删除此错误 . 或者,如果可能,减少表单方法的可访问性 .

相关问题