定义静态类的全局别名

时间:2016-06-27 10:20:42

标签: c# static alias

我有一个静态ExceptionHelper,如下所示:

public static class ExceptionHelper
{
    public static async void ShowDialog(string message)
    {
        // Show message
    }
}

每当我想调用这种方法时,我现在就这样做:

ExceptionHelper.ShowDialog("This is a message.");

我现在想到为ExceptionHelper定义一个别名,以便每次我都不想写整个单词。

我知道我可以通过using来实现它:

using Ex = MyNamespaces.ExceptionHelper;

但是我必须在我想要使用该方法的每个文件中定义它。有没有办法可以在不改变类名的情况下全局定义别名?或者我可以在类声明之上设置任何属性吗?

3 个答案:

答案 0 :(得分:4)

在C#6.0中,您可以使用静态用法:

using static MyNamespace.ExceptionHelper;

当然不是全局的,仅适用于定义。但是在使用此行的文件中,您可以使用ExceptionHelper的成员而不带任何前缀。

答案 1 :(得分:2)

扩展方法

你可以把它作为字符串的扩展方法。

public static class ExceptionHelper
{
    public static async void ShowDialog(this string message)
    {
        // Show message
    }
}

然后你会像这样使用它:

using WhateverNamespaceExceptionHelperLivesIn;

public class TestClass
{
    public void TestMethod()
    {
        "This is a message".ShowDialog();
    }
}

这使您的问题没有实际意义 - 您根本不需要定义别名。

静态导入

另一种方法是静态导入该类。您不需要别名,因为您可以直接引用ShowDialog方法。这将需要C#6 / Visual Studio 2015。

using static WhateverNamespaceExceptionHelperLivesIn.ExceptionHelper;

public class TestClass
{
    public void TestMethod()
    {
        ShowDialog("This is a message");
    }
}

答案 2 :(得分:0)

这可能适用,即使您使用的是方法。您可以使用ENUM类型,而不是任何名称空间,并以这种方式访问​​全局值。将枚举放在任何名称空间之外的文件中。您可以通过这种方式全局访问它,或者如果您遇到问题,可以使用" global"如果您在引用它时遇到任何问题,请输入以下关键字:

{{1}}