【问题标题】:class access modifier in C#C#中的类访问修饰符
【发布时间】:2023-03-05 05:30:01
【问题描述】:

我知道这是一个非常基本的问题,但我只是 C# 的新手。我知道 C# 中类的默认访问修饰符是“内部”,这意味着在同一个程序集中可用。但是假设我在模型中有两个公共(更易于访问)类 Employee 和 Departments,所以它们不需要相互引用,这很公平。但是我在controllers中也有DepartmentController和EmployeeController,需要引用Employee和Departments类,但是DepartmentController、EmployeeController和Departments不是在同一个程序集中是项目名吗?

这是程序的图片:

【问题讨论】:

  • 我认为您可能将namespacesAssemblies 混淆了。
  • 如果你把它们放在同一个程序集中,那么它们就是。
  • @cubrr 我在帖子中添加了程序图片。
  • @SamiKuhmonen 我在帖子中添加了程序图片。
  • 我相信他的意思是让他的控制器内部化正在破坏他的解决方案。原因在这里解释...stackoverflow.com/questions/27457287/…

标签: c# .net access-modifiers


【解决方案1】:

您需要引用这些类,因为它们不在同一个命名空间中(MVCDemo.Controller!= MVCDemo.Models)。如果您通过导入它们的程序集将这些类导入另一个项目的范围,您将只能看到公共类,而不是内部。我强烈建议您尝试将模型移动到类库项目并使用它们的访问修饰符来更好地理解它们的作用域含义(就像尝试使用另一个程序集导入内部类一样)。

【讨论】:

    【解决方案2】:

    是的,您的解决方案只有一个项目,并且您的项目只有一个程序集。

    这里解释了您需要在控制器上使用公共访问修饰符的原因...

    Why does the ASP.NET MVC Controller class need to be public?

    基本上,您引用的 MVC 框架需要访问控制器才能让框架使用它们,如果它们在内部,则 MVC 框架将无法访问您的控制器。

    虽然您的解决方案中有一个项目,但您引用了许多其他程序集。项目中需要由另一个程序集访问的任何内容,无论是从您的一个项目创建的程序集还是您引用的程序集,都需要具有 Public 访问修饰符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-13
      • 2018-03-06
      • 1970-01-01
      • 2014-08-27
      • 2015-04-11
      • 1970-01-01
      • 1970-01-01
      • 2011-04-10
      相关资源
      最近更新 更多