gpt4 book ai didi

c# - 将虚拟方法的可见性从 protected internal 更改为 protected 是一项重大更改吗?

转载 作者:太空狗 更新时间:2023-10-30 01:17:54 25 4
gpt4 key购买 nike

将具有 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] 需要考虑。虽然您可以编译给定的程序集并检测任何可能被破坏的当前用法(但不能预测 future 可能的用法),但其他程序集可能会通过该属性被授予内部访问权限,并且您不能仅通过编译当前程序集来验证它们。如果您删除从这种方法修改的internal 可访问性(如果他们正在使用它),它们就会中断。

关于c# - 将虚拟方法的可见性从 protected internal 更改为 protected 是一项重大更改吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30009882/

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