在c#project中,用英语创建名称为的方法,但用西班牙语调用它们?

在c#project中,用英语创建名称为的方法,但用西班牙语调用它们?,c#,localization,C#,Localization,我正在为一个客户制作一个C#项目,我的类中有一些带有英文is签名的方法,比如Connect,Disconnect,Rebuild,等等。但是我的客户在他的应用程序中用西班牙语管理所有内容。我的库项目是否可以用英语维护方法名称,但允许我的客户机用西班牙语调用方法?像Conectar,Desconectar,Recompilar?可能是对方法进行了一些修饰或类似的事情?我认为制作别名的标准方法就是让别名调用原始方法 public void Conectar(){ Connect(); }

我正在为一个客户制作一个C#项目,我的类中有一些带有英文is签名的方法,比如
Connect
Disconnect
Rebuild
,等等。但是我的客户在他的应用程序中用西班牙语管理所有内容。我的库项目是否可以用英语维护方法名称,但允许我的客户机用西班牙语调用方法?像
Conectar
Desconectar
Recompilar
?可能是对方法进行了一些修饰或类似的事情?

我认为制作别名的标准方法就是让别名调用原始方法

public void Conectar(){
    Connect();
}

我认为制作别名的标准方法就是让别名调用原始方法

public void Conectar(){
    Connect();
}
直截了当地说:不。 作为最后一种手段,您可以在类周围用西班牙语编写一个方法名包装器,在内部调用英语变体,但我不会这样做


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

直截了当地说:不。 作为最后一种手段,您可以在类周围用西班牙语编写一个方法名包装器,在内部调用英语变体,但我不会这样做


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

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

如果你真的想做方法的话

public void Conectar(){
    Connect();
}
我会把它们放在一个分部类中,这样它们就不会和主类在同一个文件中

然后您可以选择只编译英语或西班牙语

如果您愿意,您可以:

将所有方法命名为“ConnectImpl” 上英语课

public void Connect()
{
    ConnectImpl();
}
有一个西班牙语分部类,其方法如下:

public void Conectar()
{
    ConnectImpl();
}

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

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

如果你真的想做方法的话

public void Conectar(){
    Connect();
}
我会把它们放在一个分部类中,这样它们就不会和主类在同一个文件中

然后您可以选择只编译英语或西班牙语

如果您愿意,您可以:

将所有方法命名为“ConnectImpl” 上英语课

public void Connect()
{
    ConnectImpl();
}
有一个西班牙语分部类,其方法如下:

public void Conectar()
{
    ConnectImpl();
}

然后可以选择编译其中一个。这似乎是一种痛苦。

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

#if (SPANISH)
    public void Conectar()
#else
    public void Connect()
#endif
    {
        // implementation goes here...
    }
然后有两个版本,其中一个版本定义了
西班牙语
,另一个版本未定义(也称为英语版本)。 显然没有互操作性:针对西班牙语版本的库编写的代码将无法使用英语版本

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

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

#if (SPANISH)
    public void Conectar()
#else
    public void Connect()
#endif
    {
        return ConnectImpl()
    }

    private void ConnectImpl()
    {
        // Actual implementation here...
    }
。。。如果您有返回值,这当然会变得更加复杂:)


为了爱比特和字节…

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

#if (SPANISH)
    public void Conectar()
#else
    public void Connect()
#endif
    {
        // implementation goes here...
    }
然后有两个版本,其中一个版本定义了
西班牙语
,另一个版本未定义(也称为英语版本)。 显然没有互操作性:针对西班牙语版本的库编写的代码将无法使用英语版本

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

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

#if (SPANISH)
    public void Conectar()
#else
    public void Connect()
#endif
    {
        return ConnectImpl()
    }

    private void ConnectImpl()
    {
        // Actual implementation here...
    }
。。。如果您有返回值,这当然会变得更加复杂:)


出于对位和字节的热爱…

您可以将支持语言的属性放在每个方法之上,然后使用反射来查找它们,但是。。。标准本地化不起作用,因为函数名只是编译器的符号;为什么你的不同?更好的问题:为什么他用自己的方法命名?要做到这一点并不容易。通过努力使您的XML代码注释使用多种语言,您可以相当接近我认为您希望在这里实现的目标。您可以将支持语言的属性置于每个方法之上,然后使用反射来查找它们,但是。。。标准本地化不起作用,因为函数名只是编译器的符号;为什么你的不同?更好的问题:为什么他用自己的方法命名?要做到这一点并不容易。通过努力使您的XML代码注释使用多种语言,您可以相当接近我认为您希望在这里实现的目标。没有“标准”的方法来做到这一点,因为这从根本上说是个坏主意。没有“标准”的方法来做到这一点,因为这从根本上说是个坏主意。连接/断开连接/重建某些示例。。还有更多的事情。。此外,我的客户端应用程序中已经有一些方法,我正在重写这些方法。我理解,我甚至怀疑我是否应该将其作为一个编辑包含在回答中,因为它可能听起来有点刺耳或傲慢,正确的英语单词目前让我摸不着头脑。但我确实觉得,就像Tim S.在他的评论中提到的那样,既然整个框架都是用英语编写的,为什么要对其余部分进行例外?我现在在工作