Вызов метода VB6 от DLL.NET

Я считаю, что проблема заключается в том, что списки не инициализированы. Кроме того, обычно лучше кодировать интерфейс, чем реализацию, поэтому могут помочь следующие изменения:

class Store{
  private String name;
  // use interface and initialize; 
  private final List<Account> arracc = new ArrayList<>();

  //same here
  private final List<Products> arrprod = new ArrayList<>();

  public Store(){

  }

  // return; note this exposes the internal storage, so may be incorrect
 public List<Account> getArracc() {
   return arracc;
 }

 // return the products; again, exposing internals and allows
 //  for anyone who calls getArrprod() to modify the list or the elements,
 //  which breaks encapsulation
 public List<Products> getArrprod() {
    return arrprod;
 }

 ...

Я думаю, что вторую проблему можно решить с помощью некоторого рефакторинга.

private static loadProducts(Store store) {
    ArrayList<String>productsList=new ArrayList<String>();
    // Read all products from the products file

    File products = new File("Products.txt"); 
    try(Scanner input = new Scanner(products);) 
    {
      input.useDelimiter(",");
      while(input.hasNextLine()){
         productsList.add(input.nextLine()); 

      }
      input.close();
    }catch(Exception ex){
       System.out.println("Error in Products");
    }

    for(int i = 0; i< productsList.size(); i++) {
      String account=productsList.get(i);
      splittedInfoProd= account.split(",");

      String id = splittedInfoProd[0];
      String name = splittedInfoProd[1];
      String supplier = splittedInfoProd[2];
      double price = Double.valueOf(splittedInfoProd[3]));

      Products productObject = new Products (id, name, supplier, price);

      store.setArrProd(productObject); 
   }
}

store будет иметь все входы.

7
задан Daniel Rikowski 11 April 2009 в 23:36
поделиться

1 ответ

Поскольку VB6 создает COM DLL, Visual Studio не должна иметь никаких проблем при генерации interop тупика для Вас. Просто добавьте, что ссылка на VB6 DLL из Вашего проекта.NET выбором Добавляет Ссылку в Visual Studio и нахождении Вашего DLL под вкладкой COM. Удостоверьтесь, что VB6 DLL регистрируется на Вашей машине, прежде чем Вы сделаете это.

13
ответ дан 6 December 2019 в 19:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: