我有这样的东西;
internal virtual Draw() { ... }
在已编译的程序集中。我有从这个类派生的类。显然,在特定集会之外,我无法覆盖这种方法,甚至无法调用它。
是否可以隐藏此方法,因为它甚至不可见"可见"从我自己的集会?
根本没有办法改变这种行为,以防止调用此方法或重新路由它?
答案 0 :(得分:1)
如果我正确无误地使用EditorBrowsable
这样的属性会导致某个方法无法在intellisense
中显示:
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
protected internal virtual Draw() { ... }
但是如果soem body知道它在那里,你无法阻止从同一个程序集中调用它。 (你只能将它隐藏在智能感知中,人们通常认为它不存在)
答案 1 :(得分:0)
首先,我假设您的方法是protected internal
,而不是public internal
,这不是有效的方法签名。
关于隐藏方法,如果您有权访问已编译的librarys源代码,则可以将其重构为仅在程序集内部protected
,因此只有派生类型可以覆盖它。
但是,“隐藏”它没有意义,因为大会本身之外没有人(正如你所说的那样是第三方)可以调用它或覆盖它,所以没有必要这样做。