Динамический поиск с использованием Suitetalk

Я пытаюсь создать приложение C # (используя suitetalk), которое позволило бы нам выполнять поиск по записям Netsuite. Тип записи будет указан динамически. Пожалуйста, вы можете помочь?

Я проверил веб-сервисы и определил, что класс SearchRecord имеет много подклассов типа AccountSearch, ItemSearch и т. д.

Однако я хотел выполнять эти поиски динамически.

            AccountSearch acc = new AccountSearch();

            SearchResult searchresult = new SearchResult();

            searchresult = _service.search(acc);

Приведенный выше код дает мне список учетных записей. Но AccountSearch здесь жестко запрограммирован.


person Hariprasauth Ramamoorthy    schedule 20.03.2014    source источник


Ответы (1)


Фрагмент кода ниже работает.

SearchRecord search;
SearchRecord searchCriteria;
SearchRecordBasic searchBasicCriteria;

if(recordType.equals(RecordType.account)){
    search = new AccountSearchAdvanced();
    searchCriteria = new AccountSearch();
    searchBasicCriteria = new AccountSearchBasic();

    //set criteria on searchBasicCriteria 

    ((AccountSearch) searchCriteria).setBasic((AccountSearchBasic) searchBasicCriteria);
    ((AccountSearchAdvanced) search).setCriteria((AccountSearch) searchCriteria);
}else if(recordType.equals(RecordType.customer)){
    search = new CustomerSearchAdvanced();
    searchCriteria = new CustomerSearch();
    searchBasicCriteria = new CustomerSearchBasic();

    //set criteria on searchBasicCriteria 

    ((CustomerSearch) searchCriteria).setBasic((CustomerSearchBasic) searchBasicCriteria);
    ((CustomerSearchAdvanced) search).setCriteria((CustomerSearch) searchCriteria);
}else{
    search = null;
}

if(search != null) _service.search(search);

Но я думаю, что лучшим решением было бы создание конкретных методов для каждого типа поиска. Таким образом, код становится более читаемым, а также вы избегаете приведения типов. Затем вам придется обрабатывать возвращенный RecordList для каждого конкретного типа записи.

person carlosHT    schedule 29.10.2014
comment
Я понимаю, что кастинг имеет свою цену и этот код не самая красивая вещь. Нет даже в C#. Но я все же думаю, что это как-то полезно. Было бы здорово узнать, почему это не так. - person carlosHT; 30.10.2014