Преобразование пользовательского типа из VB6 в список <> в C #? - PullRequest
0 голосов
/ 29 февраля 2012

Хорошо.

У меня есть скомпилированная VB6 DLL, которую я импортировал в веб-сервис (C # ASMX).

В VB6 у меня есть следующие типы:

Public Type typeAccountInfo
    singular        As String
    code             As String
    description     As String
End Type

Public Type timeSheetRowPost
    lock            As Boolean
    code            As String
    from            As Long
    to              As Long
    fakt            As Boolean
    ik              As String
    ek              As String
    ak              As String
    accounts()      As typeAccountInfo
End Type

Public Type timeSheetDayPosts
    date            As String
    scheduleFrom    As Long
    scheduleTo      As Long
    break           As Long
    dagPost()       As timeSheetRowPost
End Type

Public Type timeSheet
    period            As String
    dayCount          As Long
    days()       As timeSheetDayPosts
End Type

TimeSheet> timeSheetDayPosts> timeSheetRowPosts> typeAccountInfo

У меня есть функция VB6, которая получает все данные, которые мне нужны.

Когда я реализую это в своем веб-сервисе asmx, я делаю это следующим образом:

 public List<returnType> myFunction(input parameters){

  List<timeSheet> VB6Array = new List<timeSheet>();
  VB6Array = new List<timeSheet>((timeSheet[])VBWrapper.myVB6Func(input params));


  // at this point VB6Array holds all the data i need. And all i need (want) at this point is to be able to cast this VB6(system.array) to a List<> object that i can return as my returntype. 

 // Pseudo : List<ReturnType> myNewReturnType = new List<ReturnType>((ReturnType[])VB6Array); 

 // However all my tries has been without success....and what i get is You must implement a default accessor on System.Array because it inherits from ICollection.

 return myNewReturnType;
 }

Будем весьма благодарны за любые советы и / или указатели о том, как привести или преобразовать тип VB6 (system.array) в List <>.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 29 февраля 2012

Может быть, это?

VB6Array = ((List<API.timeSheet>)VBWrapper.myVB6Func(input params))
.Select(x => new timeSheet { period = x.period, ... }).ToList();
0 голосов
/ 29 февраля 2012

Возможно, вам придется вручную перебрать список и скопировать данные в новый

List<your_new_similar_class>

по крайней мере, если вы хотите быстро исправить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...