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