C# 错误不一致的可访问性

C# 错误不一致的可访问性,c#,C#,我正在开发一个windows窗体应用程序。当我运行它时,它会给我一个可访问性问题。请帮我解决 MainForm代码为 namespace Tutorial2_WebForms { public partial class FormMain : Form { private UserDetails mainUD; public UserDetails MainUD { get { return mai

我正在开发一个windows窗体应用程序。当我运行它时,它会给我一个可访问性问题。请帮我解决

MainForm代码为

    namespace Tutorial2_WebForms
{
    public partial class FormMain : Form
    {
        private UserDetails mainUD;

        public UserDetails MainUD
        {
            get { return mainUD; }
            set { mainUD = value; }
        }

UserDetails类如下

错误

您的用户详细信息类是私有的,因为您没有指定访问修饰符,而MainUD属性是公共的

应公开用户详细信息类

public class UserDetails
{
   ...
}



public partial class FormMain : Form
{
        private UserDetails mainUD;

        public UserDetails MainUD
        {
            get { return mainUD; }
            set { mainUD = value; }
        }
}

UserDetails
是内部的,但您将其用作
main表单中的
public
属性。这是因为类类型的默认访问修饰符是内部的。将
UserDetails
公开,一切都会正常。

您的
UserDetails
类没有指定访问修饰符,因此默认为
internal
(即,它只能由同一程序集中的类访问)

您有一个公开
UserDetails
类的公共类(FormMain),但客户端实际上无法访问该类,因为它受到保护。因此,编译器出错


修复方法是将
UserDetails
更改为public。

您需要将类
UserDetails
设置为public
。默认情况下,类是
内部的

public class UserDetails 
{
    ...

由于您的表单是
public
,并通过属性公开
UserDetails
类,因此该类也必须是
public

将UserDetails类标记为

public class UserDetails
{
 ...
}

原因是,当任何人访问该属性时,他们会看到一个返回类型,否则该返回类型将不存在。默认情况下,该类标记为internal。

但当我将UserDetails对象(mainUD)更改为public时,它也会被下划线为mainUD。并在更改用户详细信息类定义或窗体上的属性时给出相同的错误twiceDid?