Передать класс в качестве аргумента - PullRequest
1 голос
/ 22 июня 2011

У меня есть метод API, который мне нужно вызвать.Имеет 10 параметров.Я попытался создать класс, содержащий всю информацию, необходимую для метода.Могу ли я просто передать объект в метод?

myAPIMethod(myClass);

Это так легко работает?

Ответы [ 3 ]

14 голосов
/ 22 июня 2011

Нет, так не работает. Если метод имеет 10 параметров, вам придется передать ему 10 аргументов.

Если у вас есть контроль над API, вы можете реорганизовать его для принятия одного объекта.

Если у вас нет контроля над API, вы можете написать метод в соответствии с

public void CallAPI(MyClass args)
{
   myAPIMethod(args.Arg1, args.Arg2); // whatever args are needed for the method
}

Тогда ваш код может использовать ваш класс и этот метод для вызова API. Это может быть более чистый подход, чем прямой вызов метода API с 10 аргументами в нескольких местах в вашем приложении. Но это зависит от того, что это за метод и как вы его используете.

1 голос
/ 22 июня 2011

Краткий ответ: нет, вы не можете этого сделать.

Это не совсем то, что вы искали, но в некоторых языках (например, Python) вы можете создать нечто, называемое частичное приложение (иногда неправильно называемое curry ). Это позволяет вам создать новую функцию, которая вызывает другую функцию, но с некоторыми предварительно заданными параметрами.

1 голос
/ 22 июня 2011

Вы создаете экземпляр класса, называемый объектом, и передаете объект - таким образом, «объектно-ориентированное программирование»

Если ваш метод требует 10 параметров, вы должны передать 10 параметров.Вы не можете просто передать объект, который содержит 10 параметров, если не переписать свой метод.

...