繁体   English   中英

当项目是VS2013解决方案的一部分时,如何从智能感知和主类代码文件中隐藏方法重载?

[英]how to hide method overloads from intellisense and main class code file when project is part of VS2013 solution?

我对每个方法都有太多的方法重载,我在考虑如何使MyClass对其他开发人员更易于理解/使用。 我的想法:

1。

将其标记为所有方法,使其成为部分类和新文件名MyClassOldMethods.cs

[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]

这不起作用,因为项目是解决方案的一部分。

2。

将旧方法重载作为新静态类中其他文件中的扩展方法。 但是我无法将它们隐藏在智能感知之外,或者可以吗?

现有许多代码,因此解决方案必须向后兼容。 我感觉这在第一位置是错误的,但是可以做到吗?

编辑:所以我想让我解释一下如何从智能感知中隐藏公共方法不是重复的。 它不能回答问题。 我在发布之前阅读了它。 答案清楚地表明,EditorBrowsableState在相同的解决方案中不会隐藏任何内容,并且与过时的分区无关,而是在某些地方使用了重载。 我想知道将实例方法移至扩展方法是否错误。

如果扩展方法位于使用名称空间中定义的单独名称空间中,则它们将对Intellisense隐藏。 如果需要扩展方法,则可以始终using some.namespace.with.extensions添加,它将再次可用。 应明智地使用此方法,并在适当的地方使用扩展方法。 ReSharper不使用此规则,而是显示引用库中所有可能的扩展方法。

如果一个类实现了许多接口,而无需显示所有实现的方法,则可以使用显式实现,例如:

public class SomeClass : SomeInterface
{
    void SomeInterface.SomeInterfaceMethod()
    {
         // ... some code ...
    }
}

当您检查类的所有方法, SomeInterfaceMethod将不会显示,除非类是投给SomeInterface类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM