在c#项目中,用英语创建方法,但用西班牙语调用
本文关键字:方法 西班牙语 调用 创建 英语 项目 | 更新日期: 2023-09-27 18:03:38
我正在为客户制作一个c#项目,我的类有英语签名的方法,如Connect
, Disconnect
, Rebuild
等。但我的客户,在他的申请中,用西班牙语管理一切。我的库项目可以用英语维护方法名,但允许我的客户端用西班牙语调用方法吗?比如Conectar
, Desconectar
, Recompilar
?也许在方法上加点装饰什么的?
直言不讳:不。作为最后的手段,您可以用西班牙语为方法名编写一个包装器,在内部调用英语变体,但我不会这样做。
我个人认为连接/断开连接/重建是每个程序员都应该熟悉的常见编程术语,无论他/她说什么语言
我认为创建别名的标准方法就是让别名调用原始方法。
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();
}
然后可以选择编译其中一个。虽然看起来很痛苦。