当我将它们移动到基类时,我应该如何设置我的私有变量?

时间:2011-12-19 03:27:05

标签: c#

我在所有控制器中都有以下代码:

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还是其他修饰符。

3 个答案:

答案 0 :(得分:4)

如果希望派生类具有访问权限,则可以使用“受保护”。 Private会阻止派生类访问,这不是你想要的。 Public会让任何代码访问它们,这里不需要,因为您通常不需要从外部访问Controller成员。

答案 1 :(得分:1)

将这些变量从PackagesController移动到BaseController后,如果它们只是在BaseController中使用,那么它们应该是私有的,如果它们将在PackagesController和& BaseController,它们应该受到保护。我不会让你使用'public'代表变量。

答案 2 :(得分:1)

在将此字段移动到BaseController之后,您似乎应该使用protected

私有表示字段对于其声明的类型是私有的。    - 移动后,您只能在BaseController内使用此字段。

受保护的表示字段可以在所有派生类型中使用,但不能从外部使用。    - 移动后,您可以在BaseController and all derived ones内使用此字段。

公开意味着它可以在任何地方使用。    - 移动后,您可以在任何地方使用此字段。

您可以从MSDNthis SO question获取更多信息。