he creado un archivo .dll COM-interoperabilidad con esta clase simple:Automatización de error al crear instancias de una clase COM visibles .Net
using System.Runtime.InteropServices;
namespace ClassLibrary1
{
[ComVisible(true)]
[Guid("795ECFD8-20BB-4C34-A7BE-DF268AAD3955")]
public interface IComWeightedScore
{
int Score { get; set; }
int Weight { get; set; }
}
[ClassInterface(ClassInterfaceType.None)]
[Guid("9E62446D-207D-4653-B60B-E624EFA85ED5")]
public class ComWeightedScore : IComWeightedScore
{
private int _score;
public int Score
{
get { return _score; }
set { _score = value; }
}
private int _weight;
public int Weight
{
get { return _weight; }
set { _weight = value; }
}
public ComWeightedScore()
{
_score = 0;
_weight = 1;
}
}
} Me he registrado usando: C: \ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319 \ regasm C: \ ComClasses \ Classlibrary1.dll/tlb: Classlibrary1.tlb
Finalmente añadí con éxito una referencia al .dll después de lo cual VB6 me dio intellisense sobre el objeto.
Private Sub Form_Load()
Dim score1 As ComWeightedScore
Set score1 = New ComWeightedScore
score1.Score = 500
End Sub
En la línea Set score1=new ComWeightedScore
se planteó la excepción de error de automatización.
Difícilmente puede ser más simple que esto ... ¿Dónde está el error?
Y ¿Por qué dice que el error está en la asignación de int o largo? lo que falla es la llamada del constructor. ¿Todavía fallar si se quita las asignaciones del cuerpo del constructor? Además, brinde más información y detalles sobre el error que obtiene. –