-1

我有这样的东西;

internal virtual Draw() { ... }

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

是否可以隐藏此方法,因为它甚至对我自己的程序集都不“可见”?

我有没有办法改变这种行为,防止这个方法被调用或重新路由它?

4

2 回答 2

1

如果我理解正确,使用这样的EditorBrowsable属性将导致方法不显示在intellisense

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

但是,如果某些主体知道它在那里,则不能阻止从同一个程序集中调用它。(你可以从智能感知中隐藏它,人们通常认为它不存在)

于 2014-04-27T18:45:35.660 回答
0

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

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

但是,“隐藏”它是没有意义的,因为大会本身之外的任何人(正如你所说的那样是第 3 方)可以调用它或覆盖它,所以这样做没有意义。

于 2014-04-27T18:44:10.473 回答