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