繁体   English   中英

是否将虚拟方法的可见性从受保护的内部更改为受保护的更改?

[英]Is changing the visibility of a virtual method from protected internal to protected a breaking change?

在改变了方法protected internal能见度protected外部呼叫者和类的实现者重大更改?

另请注意,该方法是虚拟的,因此可以在派生类中重写。

之前:

protected internal virtual string ResolvePropertyName(string propertyName)
{
    return propertyName;
}

后:

protected virtual string ResolvePropertyName(string propertyName)
{
    return propertyName;
}

是的,这是一个突破性的变化。

考虑在同一个程序集中但不在同一个类或派生类中并且调用ResolvePropertyName()方法的代码。 如果要将protected internal的可访问性更改为仅protected ,则该代码将不再编译。

还有[InternalsVisibleTo]需要考虑。 虽然您可以编译给定的程序集并检测任何可能被破坏的当前用法(但不会预期将来可能使用),但是其他程序集可能会通过该属性被授予internal访问权限,并且您无法通过编译当前程序集来验证它们。 如果您删除了从这种方法修改的internal可访问性,如果他们正在使用它,它们将会中断。

答案取决于谁在问。

  1. 如果您是开发人员,他在组件中处理代码并调用ResolvePropertyName而不从包含ResolvePropertyName的类派生,那么是。 这是一个突破性的变化。
  2. 如果你在程序集外部工作,没有任何变化,只有派生类可以调用这个方法,所以你很好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM