【问题标题】:Is there a way to change the order of constructors listed in IntelliSense in Visual Studio?有没有办法更改 Visual Studio 中 IntelliSense 中列出的构造函数的顺序?
【发布时间】:2011-03-24 09:50:01
【问题描述】:

我已经定义了一个具有多个构造函数的类,这样一旦对象被实例化,底层接口就是不可变的。当用户在 Visual Studio 中键入以下内容时,我希望其中一个构造函数成为“默认”构造函数:

var obj = new MyClass(

Dim obj As New MyClass(

目前,当我去实例化对象时,构造函数没有按照我在类中声明的顺序列出(在 Visual Studio IntelliSense 中)。有没有办法标记我的构造函数,以便它们的方法在 Visual Studio IntelliSense 中的实例化过程中以特定顺序出现?

【问题讨论】:

    标签: c# .net vb.net visual-studio intellisense


    【解决方案1】:

    在 Visual Studio 的 Intellisense 中无法控制排序。如果您确实有多个构造函数(或方法),那么就智能感知而言,您唯一真正的控制是将EditorBrowsable 与适当的EditorBrowsableState 一起使用。这允许您在智能感知中隐藏构造函数(或方法),或者仅在“高级”模式下显示它,但不允许您对其重新排序。

    但是,在这种情况下,如果您的目标是 .NET 4,我建议您考虑使用单个构造函数,并利用 named and optional arguments

    【讨论】:

    • 关于使用命名和可选参数的好建议。因此,我能够将构造函数的数量从 4 个减少到 2 个。
    【解决方案2】:

    这是一个有趣的问题,但我还没有听说过这种能力。一种选择是将其他构造函数标记为高级或隐藏。

    ComponentModel.EditorBrowsable( ComponentModel.EditorBrowsableState.Advanced ) ComponentModel.EditorBrowsable( ComponentModel.EditorBrowsableState.Never )

    【讨论】:

    • 很好的建议,但由于某种原因,这似乎不适用于构造函数。
    【解决方案3】:

    我很确定您的要求是不可能的。最好的办法是用XML comments 标记您的构造函数,这将用于填充VS 中的智能感知。这将为用户提供有关默认构造函数等的详细智能感知。

    社论:我很确定 VB.NET 按照它们在类声明中出现的顺序对构造函数进行排序。

    您必须记住,智能感知不是语言的功能,而是编辑器的功能。您不会有特定于 IDE 内置到语言中的功能,因为可以使用其他编辑器来编写代码。为了写代码而写代码是不合时宜的。

    【讨论】:

      【解决方案4】:

      您始终可以使用工厂模型并为每个方法设置受保护的构造函数。不过我更喜欢 Reed Copsey answer。但是,如果 .NET 4.0 不是一个选项,这可能是一个替代方案。

      【讨论】:

        【解决方案5】:

        作为应用程序开发人员,似乎仍然没有办法规定顺序。 IntelliSense 似乎首先根据参数的数量进行排序,而不管参数是否是可选的(无论哪种方式都可以计算)。

        如果你有可选参数,你可以将它们重新设计为重载,从而创建一个具有更少参数的新方法/构造函数,这些参数将更早出现。您还可以通过将它们声明为内部来隐藏对应用程序开发人员无用的构造函数。

        使用这些方法我可以解决我的小问题。我有一个反序列化构造函数,它在更常用的构造函数之前弹出。

        【讨论】:

          猜你喜欢
          • 2013-01-04
          • 1970-01-01
          • 2020-07-09
          • 2017-05-13
          • 2015-10-11
          • 1970-01-01
          • 1970-01-01
          • 2011-09-15
          • 2020-05-09
          相关资源
          最近更新 更多