2010-12-19 3 views
0

안녕하세요, GetArray() 메서드로 MyClass 형식의 개체 목록을 반환하는 C# 프로젝트가 있습니다. 이 DLL을 regasm ClassLibrary1.dll/codebase/tlb에 등록한 다음 아래 코드로 VBL 프로젝트의 ClassLibrary1.tlb 참조를 추가합니다. 나는 마이크로 소프트 비주얼 스튜디오 작동 6.0하지만 난 VB6의 EXE를 실행하려고하면 내가클래스 개체의 배열을 C#에서 VB6으로 전달

using System.Collections.Generic; 

using System.Runtime.InteropServices; 

namespace ClassLibrary1 

{ 

    [ClassInterface(ClassInterfaceType.AutoDual)] 

    [Guid("D878834C-306E-4260-905F-BDEBDF14CBDA")] 

    [ComVisible(true)] 

    public class MyProjectC 

    { 

     public MyClass[] GetArray() 

     { 

      var list = new List<MyClass> 

          { 

           new MyClass {Nome = "A"}, 

           new MyClass {Nome = "AB"}, 

           new MyClass {Nome = "AC2"}, 

           new MyClass {Nome = "D"} 

          }; 

      return list.ToArray(); 
     } 
    } 


    [ClassInterface(ClassInterfaceType.AutoDual)] 

    [Guid("D878834C-306E-4260-905F-BDEBDF14C111")] 

    [ComVisible(true)] 

    public class MyClass 

    { 

     public string Nome; 

    } 

} 


Private Sub Form_Load() 

    On Error GoTo error 

    Dim str As String 

    Dim oBookMark As Variant 
    Dim theProjectC As New ClassLibrary1.MyProjectC 


    For Each oBookMark In theProjectC.GetArray 
     str = oBookMark.Nome 
     MsgBox str 
    Next 

    Exit Sub 

error: 
MsgBox "Errore" & Err.Description 

End Sub 
+4

런타임 오류가 게시 된 경우 도움이됩니다. –

+0

IDE가 아닌 EXE 자체에서 테스트 할 수도 있습니다. 일부 또는 다른 이유로 IDE에서 VB6 응용 프로그램을 사용할 수 없지만 EXE가 정상적으로 작동합니다. – jakdep

답변

0

공공 재산 공개 필드 MyClass.Nome을 변경해보십시오 런타임 오류가 내부의 VB6 응용 프로그램을 실행하는 경우 :

public string MyNome { get; set; } 
관련 문제