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
런타임 오류가 게시 된 경우 도움이됩니다. –
IDE가 아닌 EXE 자체에서 테스트 할 수도 있습니다. 일부 또는 다른 이유로 IDE에서 VB6 응용 프로그램을 사용할 수 없지만 EXE가 정상적으로 작동합니다. – jakdep