2014-09-30 2 views
-5

У меня возникли проблемы с получением экземпляра класса для функции, без предварительной инициализации (как эта библиотека была настроена, при создании экземпляра класса запускаются события, из которых я не хочу быть изначально) ,Экземпляр класса, созданный в списке параметров метода вызова?

TopClass TC = new TopClass(); 

и член ТК (DoStuff) можно получить из класса AClass ...

AClass myClass = TC.dostuff(parameters); 

метод определяется как:

public void MyMethod(Aclass myClass, bool value) {/* */} 

и метод вызова, как

bool val = true; //or false, depending on what I need 

MyMethod(AClass myclass = TC.dostuff(parameters), val); // Is this really bad? 

Я не могу инициализировать его остроумие hin MyMethod без запуска событий, и я не могу передать экземпляр класса как null, что оставляет меня с указанным выше. По крайней мере, я могу либо остановить, либо запустить нужные события внутри MyMethod, в зависимости от значения bool. Что здесь происходит? (кроме, вероятно, не хорошего дизайна ООП). Помогло бы создание ссылки на AClass в таком сценарии?

+3

«Это действительно плохо?» Ну, это не скомпилируется ... – Crisfole

+0

Я думаю, вам нужно быть здесь * более конкретным. Можете ли вы показать события? И имена * actual * class ... похоже, что ваши объекты слишком много делают в своих конструкторах. – Crisfole

+0

Я не понимаю требований. Какой конструктор/метод запускает события точно? Что это за последняя строка кода? Он не может компилироваться. Это настоящая проблема? –

ответ

0

Удалите AClass myClass = с вызова MyMethod.

MyMethod(TC.dostuff(parameters), val); 

Это не влияет на события запуска, но будет получить экземпляр AClass в вызове метода.

+0

спасибо BWHazel - на самом деле это была опечатка с моей стороны (я не ставил название класса). Как правило, мне интересно, не так ли это, или нет, передать этот путь в параметре метода – Chaz

+0

Привет @Chaz - нет, это не значит, что он не будет проходить в таких случаях; ведь он поддерживается на этом языке!Однако, если код начинает казаться нечитаемым, неуправляемым или трудным для понимания, тогда было бы лучше получить экземпляр сначала как именованный объект, а затем передать это вместо. :) – BWHazel

Смежные вопросы