C#模型类成员应该是公共还是私人

时间:2019-02-18 00:54:05

标签: c# .net-core .net-core-2.0

大多数情况下,大多数C#类成员都应设为私有,以防万一我希望其他类对其进行修改(然后将它们公开)?我看到大多数教程都将所有班级成员公开。我开始认为这可能是不好的做法。

想了解一般的软件工程原理。

https://github.com/Apress/pro-asp.net-core-mvc/blob/master/Source%20Code%201-31/08%20-%20SportsStore/SportsStore/src/SportsStore/Models/Product.cs

示例:

public class Product {
        public int ProductID { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
        public decimal Price { get; set; }
        public string Category { get; set; }
    }

1 个答案:

答案 0 :(得分:0)

要在应用程序上下文中回答您的问题...

您的示例是Model 1 的示例。它的属性是公开的,因为:

  

按照惯例,模型中将包含具有getter和setter的公共属性。 2

通常,属性是公共的(或受保护的或内部的),字段是私有的。

属性应以某种方式公开。例如,模型公开了一些属性。

私有字段适合于依赖项。例如,在来自链接存储库的ProductController 3 中:

public class ProductController : Controller {
    private IProductRepository repository;
    // ...

    public ViewResult List(int page = 1) {
        // Use repository, only in ProductController
        // ...
    }
}

参考文献

  1. https://docs.microsoft.com/en-us/ef/core/modeling/
  2. https://docs.microsoft.com/en-us/ef/core/modeling/included-properties
  3. https://github.com/Apress/pro-asp.net-core-mvc/blob/ecbc7336cc9b4adb05825e8a0a355f3089fa4f0a/Source%20Code%201-31/08%20-%20SportsStore/SportsStore/src/SportsStore/Controllers/ProductController.cs

P.S。关于“通用软件工程原理”的问题有可能由于主要基于意见而被封闭。请参阅以下堆栈溢出帮助主题:How do I ask a good question?