我有一个相对简单的C#类,想将其编组到VB项目中。看起来像这样(我简化了这篇文章):
[Guid("AAAAAAAA-AAAA-AAAA-AAAA-123456789ABC", ClassInterface(ClassInterfaceType.AutoDual), ComVisible(true)]
[ProgId("MyBiz.MyResponse")
[Serializable]
public class MyResponse
{
public bool Success { get; set; }
public int ID{ get; set; }
public string Location{ get; set; }
public ArrayList Messages { get; set; }
}
邮件包含0个或多个字符串。我对此进行编译,并创建一个供VB6使用的类型库。就从简单类型传递数据而言,一切工作都很好,但是Messages变量虽然VB运行时将其识别为ArrayList,但即使在应该的情况下也不包含任何数据。就封送数据而言,我缺少什么?我知道泛型不编组,但我相信ArrayList可以。我是否缺少属性,还是其他?
无需提供替代解决方案,因为我想问这个问题是因为我想知道如何做,而不是因为我没有替代方案,如果我可以解决这个问题。谢谢!
一种解决方法是使用COM SafeArray将数据从.NET来回传递到COM。与使用ArrayList相比,我对这种技术的运气更好。您的消息的声明可能类似于:
[return: MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_BSTR)]
public string[] Messages
这将在VB6或类似的COM客户端中显示为
Public Messages() as String
一个COM安全字符串数组。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句