Я делаю проект С# для клиента, а мой класс имеет методы с подписями на английском языке, что-то вроде Connect
, Disconnect
, Rebuild
и т.д. Но мой клиент в своем приложении управляет всем на испанском языке. Может ли мой проект библиотеки поддерживать имена методов на английском языке, но позволяет моему клиенту вызывать методы на испанском? как Conectar
, Desconectar
, Recompilar
? Может быть, какое-то украшение на методе или что-то в этом роде?
Прямо говоря: Нет. В крайнем случае вы можете написать обертку вокруг своего класса с именами методов на испанском языке, вызвав английские варианты внутри, но я бы этого не сделал.
Лично я считаю, что Connect/Disconnect/Rebuild - это обычные термины программирования, которые должен знать каждый программист, независимо от того, на каком языке он говорит.
Я думаю, что стандартный способ создания псевдонима состоит в том, чтобы псевдоним вызывал оригинальный метод.
public void Conectar(){
Connect();
}
Для любви к битам и байтам - Не делайте этого! Но ответ:
#if (SPANISH)
public void Conectar()
#else
public void Connect()
#endif
{
// implementation goes here...
}
Затем создайте две сборки, в которых один из них построен с определением SPANISH
, а другой не определен (aka English build). Очевидно, что никакой интероперабельности: код, написанный против испанской версии библиотеки, не сможет использовать английскую версию.
Если я не упомянул об этом, за любовь к битам и байтам...
Ой! И у вас будет немного проблем, когда вы пытаетесь вызвать публичные функции из своего кода. Вам либо придется окружать каждый раз #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();
}
Затем вы можете скомпилировать тот или иной. Кажется, боль.