小编Dav*_*ave的帖子

Generics和Com Visible .NET库

我开发了一个VB.NET库(部分是在C#上开发的),它很大程度上依赖于从一个抽象的泛型基类继承而来,我正试图找出最佳实践.我不得不使用框架3.5来做到这一点.

Public MustInherit Class MyBaseClass(Of T)
  Public Whatever As T
End Class

Public Class MyDerivedClass
  Inherits MyBaseClass(Of String)

  Private _myProperty As String

  Public Property MyProperty As String
    Get
      Return _myProperty
    End Get
    Set(value As String)
      _myProperty = value
    End Set
  End Property
End Class
Run Code Online (Sandbox Code Playgroud)

我将.tlb文件作为VBA中的引用(使用Excel)附加,并运行以下代码:

Dim m As New VBtoVBA.MyDerivedClass
m.MyProperty = "foo"
Run Code Online (Sandbox Code Playgroud)

我得到错误"运行时错误430:类不支持自动化或不支持预期的接口".

另一方面,我将第一行更改为:

Public MustInherit Class MyBaseClass
  Public Whatever As String
End Class

Public Class MyDerivedClass
  Inherits MyBaseClass
Run Code Online (Sandbox Code Playgroud)

VBA脚本有效.因此,我认为问题在于泛型(也在其他来源中有记录).但是,删除我的库的通用功能是不可能的.我能想到的"最佳"解决方法是编写包含MyDerivedClass作为字段的第三个类,并将其作为非泛型接口:

Public Class MyDerivedClassString

  Private _innerObj As New MyDerivedClass

  Public …
Run Code Online (Sandbox Code Playgroud)

.net vb.net generics com vba

1
推荐指数
1
解决办法
364
查看次数

标签 统计

.net ×1

com ×1

generics ×1

vb.net ×1

vba ×1