[英]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
可访问性,如果他们正在使用它,它们将会中断。
答案取决于谁在问。
ResolvePropertyName
而不从包含ResolvePropertyName
的类派生,那么是。 这是一个突破性的变化。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.