C#模型类成员应该是公共还是私有[关闭]

问题描述 投票:0回答:1

是否应该将大多数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; }
    }
c# .net-core .net-core-2.0
1个回答
0
投票

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

你的例子是Model1的例子。它的属性是公开的,因为:

按照惯例,带有getter和setter的公共属性将包含在model.2

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

财产应以某种方式暴露。例如,Model公开了一些属性。

私有字段适用于依赖项。例如,在链接回购的ProductController3中:

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

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

References

  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

附:关于“通用软件工程原理”的问题可能会因为主要基于意见而被关闭。请参阅Stack Overflow帮助主题:How do I ask a good question?

© www.soinside.com 2019 - 2024. All rights reserved.