我在所有控制器中都有以下代码:
public class PackagesController : BaseController
{
private IAccountService _account;
private IDataSourceService _dataSource;
private IPackageService _package;
private IProductService _product;
private IContentService _content;
private ISequenceService _sequence;
它们都继承自BaseController。我对公共,私人和受保护之间的区别感到有点困惑。我想我可以将它们移动到BaseController中。如果我这样做,那么我应该使用private,protected还是其他修饰符。
答案 0 :(得分:4)
如果希望派生类具有访问权限,则可以使用“受保护”。 Private会阻止派生类访问,这不是你想要的。 Public会让任何代码访问它们,这里不需要,因为您通常不需要从外部访问Controller成员。
答案 1 :(得分:1)
将这些变量从PackagesController移动到BaseController后,如果它们只是在BaseController中使用,那么它们应该是私有的,如果它们将在PackagesController和& BaseController,它们应该受到保护。我不会让你使用'public'代表变量。
答案 2 :(得分:1)
在将此字段移动到BaseController之后,您似乎应该使用protected
。
私有表示字段对于其声明的类型是私有的。
- 移动后,您只能在BaseController
内使用此字段。
受保护的表示字段可以在所有派生类型中使用,但不能从外部使用。
- 移动后,您可以在BaseController and all derived ones
内使用此字段。
公开意味着它可以在任何地方使用。 - 移动后,您可以在任何地方使用此字段。
您可以从MSDN和this SO question获取更多信息。