【问题标题】:Avoiding typing fully qualified name避免输入完全限定名称
【发布时间】:2017-12-22 01:03:43
【问题描述】:

假设我有一个辅助类,如下所示:

namespace MyNamespace
{
    public class DataHelpers
    {
        public string SysnamePath ( string db , string schema , string table )
        {
            return "[" + db + "].[" + schema + "].[" + table + "]";
        }
    }
}

我怎样才能重写它或者我可以做些什么来使它不必继续输入完全限定的名称......

string dbpath = DataHelpers.SysnamePath(...);

我不希望它成为扩展方法,或者我不明白这有什么帮助,我不想将该方法粘贴到调用者所在的同一页面中。

我可能不懂一些基本的东西,因为我正在自学。我的理解是该方法必须在一个类中。我只是不想输入那个类名。

就像我说的,我确信这是基本的东西。

【问题讨论】:

  • 通常辅助方法是static,这意味着您不必为了使用它们而实例化一个类(如Console.WriteLine())。除此之外,根据我的经验,大多数开发人员写出类名而不是用using 语句隐藏它。大概是为了更具可读性/可理解性的代码。当你最终有一些其他 Helpers 类也有一个 SysnamePath 方法时,它也变得很有必要,因为那时你将不得不做一些额外的输入来区分它们。
  • @Rufus,非常感谢。我听说过使用“帮助类”这个术语,但我一直将我的静态扩展方法称为扩展方法,将我用来减少击键的方法称为“帮助类”。我得查一下。不过,这很可能是一个静态方法(如果我也将类设为静态),对吧?
  • @RufusL 没关系,下面的答案回答了我的问题。
  • 该方法可以是静态的。例如string类不是静态的,但它有静态方法,如CompareConcatFormat等。如果类只包含静态方法和属性,也可以设为静态。
  • 哇哦。好的,我认为由于静态类只能包含静态方法,因此静态方法必须在静态类中。这是一个令人兴奋的时刻。我现在不需要在我的类库中将这些全部分开。

标签: c# class code-readability


【解决方案1】:

将你的类和方法设为静态:

namespace MyNamespace
{
    public static class DataHelpers
    {
        public static string SysnamePath ( string db , string schema , string table )
        {
            return "[ " + db + " ].[ " + schema + " ].[ " + table + " ]";
        }
    }
}

在你想使用的文件头中添加:

using static DataHelpers;

使用:

string dbpath = SysnamePath(...);

Reference

【讨论】:

  • 呃!当然!在由于类修饰符而导致方法不能是静态的情况下,我将尝试添加到命名空间声明中,但这就是我正在寻找的答案!非常感谢!
【解决方案2】:

在你的命名空间中添加:

using DH = MyNamespace.DataHelpers

那么你可以这样做:

var p = new DH();

【讨论】:

  • 我真的很喜欢这个,因为当我不断使用一种方法时,它可以减少击键次数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-08
  • 1970-01-01
  • 2019-10-09
  • 2016-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多