Re: .NET DLL use in VB6

Tech-Archive recommends: Fix windows errors by optimizing your registry



This does not help me. I am not looking at using one of the existing .NET
classes. I need to create my own C# class that inherits a VB6 COM interface
from a VB6 DLL and then use this C# DLL that I export to a TLB file in VB6.
The problem is that when I reference the TLB file in VB6, none of the C#
interface is visible. The class is but none of its methods or properties.

My problem is that I cannot specify the inherited interface properties as
public in my C# DLL without the compiler throwing an error.

"sloan" wrote:


Try this:
http://msdn.microsoft.com/vbrun/vbfusion/usingnet/default.aspx




"Mike Sharpe" <MikeSharpe@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message
news:5A070168-261D-44E9-9628-3BD626567D25@xxxxxxxxxxxxxxxx
We have many old COM classes that are still in use. They were written in
VB6. We are now starting to do some things in C# however we cannot just
throw away everything from COM and start over. Our migration to C# will
be
multi-phase and right now we just need proof of concept. Here's our
situation:

1. We need to create a DLL/TLB in C# that works in VB6
2. C# class needs to implement a VB6 class interface
3. C# class needs to be exported to COM TLB for use in VB6



Here is my basic code:

using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;


namespace UserBV
{
[ComVisible(true)]
public class UserBVInput: AlfaBVIO.BVInput
{

[ComVisible(true)]
void AlfaBVIO._BVInput.Initialize(ref DSDataObjects.DSDataType
iSettings)
{

}

[ComVisible(true)]
void AlfaBVIO._BVInput.GetScenarios(string iFileName, ref
System.Array oScenarios)
{

}


public BVInput()
{

}

~BVInput()
{

}
}


[ComVisible(true)]
public class BVOutput : AlfaBVIO.BVOutput
{

public BVOutput()
{

}

~BVOutput()
{

}

[ComVisible(true)]
void AlfaBVIO._BVOutput.Initialize(ref DSDataObjects.DSDataType
iSettings)
{

}

[ComVisible(true)]
void AlfaBVIO._BVOutput.Add(ref DSDataObjects.DSDataType
iFileHeader, ref DSDataObjects.DSDataType iBVSeries)
{

}

[ComVisible(true)]
void AlfaBVIO._BVOutput.Save()
{

}
}
}



I have the project file set according to "Register for COM interop" as
well
as "Make assembly COM visible". I am able to reference the built TLB file
in
a VB6 project but there are no public methods. The VB6 interface that I
must
implement from is called AlfaBVIO.BVInput

Can someone please help me? I'm sure to anyone that has experienced this
before it is a no-brainer. This is just the first time I've ever had to
do
something as odd as this.



.



Relevant Pages

  • Re: How to marshal code to the original thread
    ... threads to VB6 COM clients using connectionpoint interfaces. ... connectionpoint interface support. ... public delegate void TouchedEventHandler; ... Private Sub myCowboy_Touched ...
    (microsoft.public.dotnet.languages.csharp)
  • VB6 + VC++ : how to avoid flicker?
    ... I create a simple VB6 Window application (a void form) and I define ... Private Sub Form_Load ... VB6 draws on the screen. ...
    (microsoft.public.dotnet.languages.vc)
  • VB6 + VC++ : how to avoid flicker?
    ... I create a simple VB6 Window application (a void form) and I define ... Private Sub Form_Load ... VB6 draws on the screen. ...
    (microsoft.public.vb.general.discussion)
  • Re: .NET DLL use in VB6
    ... We need to create a DLL/TLB in C# that works in VB6 ... public class UserBVInput: AlfaBVIO.BVInput ... void AlfaBVIO._BVInput.Initialize(ref DSDataObjects.DSDataType ... public class BVOutput: AlfaBVIO.BVOutput ...
    (microsoft.public.dotnet.languages.csharp)
  • .NET DLL use in VB6
    ... We need to create a DLL/TLB in C# that works in VB6 ... void AlfaBVIO._BVInput.Initialize(ref DSDataObjects.DSDataType ... public class BVOutput: AlfaBVIO.BVOutput ... I have the project file set according to "Register for COM interop" as well ...
    (microsoft.public.dotnet.languages.csharp)