正在隐藏内部虚拟方法

本文关键字:虚拟 方法 内部 隐藏 | 更新日期: 2023-09-27 18:00:28

我有这样的东西;

internal virtual Draw() { ... }

在已编译的程序集中。我有从这个类派生的类。显然,在特定程序集之外,我无法覆盖这个方法,甚至无法调用它

有可能隐藏这个方法吗,因为它在我自己的程序集中甚至都不"可见"?

难道我根本没有办法改变这种行为,阻止这个方法被调用或重新路由它吗?

正在隐藏内部虚拟方法

如果我正确地取消了调用,那么像这样使用EditorBrowsable属性将导致方法不会显示在intellisense:中

[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
protected internal virtual Draw() { ... }

但是,如果soem实体知道它在同一个程序集中,则不能阻止从该程序集调用它。(你可以对intellisense隐藏它,人们通常认为它不存在)

首先,我假设您的方法是protected internal,而不是public internal,这不是有效的方法签名。

关于隐藏方法,如果您可以访问已编译库的源代码,则可以将其重构为仅在程序集中的protected,这样只有派生类型才能覆盖它

但是,"隐藏"它是没有意义的,因为议会之外的任何人(正如你所说,议会本身是第三方)都不能称之为或推翻它,所以这样做毫无意义。