当项目是 VS2013 解决方案的一部分时,如何从智能感知和主要 class 代码文件中隐藏方法重载?
how to hide method overloads from intellisense and main class code file when project is part of VS2013 solution?
我对每个方法都有太多的方法重载,我正在考虑如何使 MyClass 更容易 understandable/usable 供其他开发人员使用。我的想法:
1.
将其设为部分 class 和新文件名 MyClassOldMethods.cs 并标记所有方法
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
这不起作用,因为项目是解决方案的一部分。
2.
将旧方法重载为新静态中其他文件中的扩展方法class。但我无法从智能感知中隐藏它们,我可以吗?
存在大量现有代码,因此解决方案必须向后兼容。我觉得这首先是错误的,但是可以做到吗?
编辑:
所以要我解释一下 How to hide public methods from intellisense 不是重复的。它没有回答问题。我在发布之前阅读了它。答案清楚地表明 EditorBrowsableState 不会在同一解决方案中隐藏任何内容,并且它与分区过时但在某处使用过载无关。我想知道将实例方法移动到扩展方法是否错误。
如果扩展方法位于在 using 命名空间中定义的单独命名空间中,它们将对 Intellisense 隐藏。如果您需要扩展方法,您可以随时添加 using some.namespace.with.extensions
,它将再次可用。应该明智地使用这种方法,并且应该在适当的地方使用扩展方法。 ReSharper 不使用此规则并显示引用库中所有可能的扩展方法。
如果一个class实现了很多接口,不需要显示所有实现的方法,可以使用显式实现,例如:
public class SomeClass : SomeInterface
{
void SomeInterface.SomeInterfaceMethod()
{
// ... some code ...
}
}
当您检查 class 的所有方法时,除非将 class 转换为 SomeInterface
类型,否则不会显示 SomeInterfaceMethod
。
我对每个方法都有太多的方法重载,我正在考虑如何使 MyClass 更容易 understandable/usable 供其他开发人员使用。我的想法:
1.
将其设为部分 class 和新文件名 MyClassOldMethods.cs 并标记所有方法
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
这不起作用,因为项目是解决方案的一部分。
2.
将旧方法重载为新静态中其他文件中的扩展方法class。但我无法从智能感知中隐藏它们,我可以吗?
存在大量现有代码,因此解决方案必须向后兼容。我觉得这首先是错误的,但是可以做到吗?
编辑: 所以要我解释一下 How to hide public methods from intellisense 不是重复的。它没有回答问题。我在发布之前阅读了它。答案清楚地表明 EditorBrowsableState 不会在同一解决方案中隐藏任何内容,并且它与分区过时但在某处使用过载无关。我想知道将实例方法移动到扩展方法是否错误。
如果扩展方法位于在 using 命名空间中定义的单独命名空间中,它们将对 Intellisense 隐藏。如果您需要扩展方法,您可以随时添加 using some.namespace.with.extensions
,它将再次可用。应该明智地使用这种方法,并且应该在适当的地方使用扩展方法。 ReSharper 不使用此规则并显示引用库中所有可能的扩展方法。
如果一个class实现了很多接口,不需要显示所有实现的方法,可以使用显式实现,例如:
public class SomeClass : SomeInterface
{
void SomeInterface.SomeInterfaceMethod()
{
// ... some code ...
}
}
当您检查 class 的所有方法时,除非将 class 转换为 SomeInterface
类型,否则不会显示 SomeInterfaceMethod
。