gpt4 book ai didi

c# - 公开 protected 字段的最佳方式

转载 作者:行者123 更新时间:2023-11-30 13:08:59 29 4
gpt4 key购买 nike

我有一个这样的基类:

 public class BaseModalCommand
{

protected object m_commandArgument;
protected int m_commandID;
protected int m_enableUIFlags;

public virtual void OnIdle()
{
}

public virtual void OnResume()
{
}

public virtual void OnStart(int commandID, object argument)
{
}

public virtual void OnStop()
{
}



public virtual int EnableUIFlags
{
get
{
return this.m_enableUIFlags;
}
}
}

虚方法将在派生类型中被覆盖。如果我通过 FxCop 运行它,它会提示未声明可见实例字段并建议将其更改为私有(private)并将其公开为 protected 属性。

有什么想法吗?我认为可以忽略此消息。

最佳答案

对于任何类,客户端代码有两种用途:引用您的类的代码和继承您的类的代码。人们普遍认为,第二种用法是迄今为止耦合最紧密的。你类(class)的变化直接影响他们的内部机制。像这样公开 protected 成员意味着基类中的更改将影响派生类的工作方式,如果不比较每个基类和派生类的代码,这种方式是不可预测的。同样糟糕的是,您的派生类可以修改基类的内部结构。

如果您真的想像这样公开内部数据成员,请将私有(private)数据成员包装在 protected 属性中(如 gisresearch 建议的那样)。这些属性(以及任何 protected 方法)构成了您的类的继承接口(interface)。与任何暴露给外部客户的接口(interface)一样(无论是通过定义公共(public)方法和属性,还是通过显式接口(interface)实现),这个接口(interface)是您需要管理的东西,尤其是在较大的代码库中。界面可以更改,但应作为有意识的决定进行更改。

如果您直接使用 protected 数据成员,您对基类和派生类之间的依赖关系的控制就会少得多。相信我:甚至无法确定更改可能产生的影响可能是一件非常不愉快的事情。

关于c# - 公开 protected 字段的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/778773/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com