在c#项目中,用英语创建方法,但用西班牙语调用

本文关键字:方法 西班牙语 调用 创建 英语 项目 | 更新日期: 2023-09-27 18:03:38

我正在为客户制作一个c#项目,我的类有英语签名的方法,如Connect, Disconnect, Rebuild等。但我的客户,在他的申请中,用西班牙语管理一切。我的库项目可以用英语维护方法名,但允许我的客户端用西班牙语调用方法吗?比如Conectar, Desconectar, Recompilar ?也许在方法上加点装饰什么的?

在c#项目中,用英语创建方法,但用西班牙语调用

直言不讳:不。作为最后的手段,您可以用西班牙语为方法名编写一个包装器,在内部调用英语变体,但我不会这样做。

我个人认为连接/断开连接/重建是每个程序员都应该熟悉的常见编程术语,无论他/她说什么语言

我认为创建别名的标准方法就是让别名调用原始方法。

public void Conectar(){
    Connect();
}

为了对比特和字节的热爱- 不要这样做!但答案是:

#if (SPANISH)
    public void Conectar()
#else
    public void Connect()
#endif
    {
        // implementation goes here...
    }

然后有两个构建,其中一个构建时定义了SPANISH,而另一个没有定义(又名英文构建)。显然没有互操作性:针对西班牙语版本库编写的代码将无法使用英语版本。

如果我没有提到它,为了对比特和字节的热爱…

哦!当您试图从代码中调用公共函数时,您会遇到一些麻烦。您要么必须像上面那样每次都用#if包围,要么对于每个公共的,调用底层的基于英语的实现助手,如:

#if (SPANISH)
    public void Conectar()
#else
    public void Connect()
#endif
    {
        return ConnectImpl()
    }
    private void ConnectImpl()
    {
        // Actual implementation here...
    }

…当然,如果你有返回值,这将变得更加复杂:)

您可以为该方法添加一个属性。但这只有在使用反射调用方法时才有用。

如果你想创建方法

public void Conectar(){
    Connect();
}

我会把它们放在一个局部类中,这样它们就不会和你的主类在同一个文件中。

那么您可以选择只编译英语或只编译西班牙语。

如果你想,你可以:

把你所有的方法命名为"ConnectImpl"有英语部分课

public void Connect()
{
    ConnectImpl();
}

创建一个西班牙语部分类,方法如下:

public void Conectar()
{
    ConnectImpl();
}

然后可以选择编译其中一个。虽然看起来很痛苦。