相关疑难解决方法(0)

什么是COM Interop的通用集合的替代品?

我试图从.NET程序集返回一系列部门,以便通过COM Interop使用ASP.使用.NET我会返回一个通用集合,例如List<Department>,但似乎泛型不适用于COM Interop.那么,我的选择是什么?

我想迭代列表并能够通过索引访问项目.我应该继承List<Department>,实施IList,IList<Department>或另一个接口,或者是有没有更好的办法?理想情况下,我不希望为我需要的每种类型的列表实现自定义集合.此外,List[index]甚至可以使用COM Interop?

谢谢,迈克

示例.NET组件(C#):

public class Department {
    public string Code { get; private set; }
    public string Name { get; private set; }
    // ...
}

public class MyLibrary {
    public List<Department> GetDepartments() {
        // return a list of Departments from the database
    }
}
Run Code Online (Sandbox Code Playgroud)

示例ASP代码:

<%
Function PrintDepartments(departments)
    Dim department
    For Each department In departments
        Response.Write(department.Code & ": " & department.Name & "<br />")
    Next …
Run Code Online (Sandbox Code Playgroud)

.net generics collections com-interop asp-classic

10
推荐指数
2
解决办法
6538
查看次数

我应该在.NET中使用哪个集合接口进行COM-interop?

这是我之前的问题的后续内容,但您不需要阅读它来理解那个问题.

我正在设计.NET中的接口,它将从COM应用程序(主要是VB6,但Visual C++ 6也是一种可能性)中使用,我想使用Collection类型作为接口中方法的参数和返回类型.

问题:

  1. 当VB6内置集合类型(数组,集合,字典)通过互操作时会发生什么?我目前的猜测是:

    • 数组 - > System.Array
    • 收藏 - > Microsoft.VisualBasic.Collection
    • 词典 - > System.Collections.Hashtable

    那是对的吗?

  2. 我应该使用哪些接口作为返回类型?IEnumerable,ICollection,IList,IDictionary?我是否能够在VB6中执行For Each迭代这些接口?我应该使用接口的通用或非通用变体吗?

.net vb6 com-interop

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

C#将类暴露给COM - 通用集合

我们有一个用C#.Net 2.0编写的小框架,我们想要向COM公开.

问题是,我们有一些通用类,将公开如下:

interface IOurClass
{
  ReadonlyCollection<IOurListObject> OurCollection
  {
    get;
  }
}

interface IOurListObject
{
  //Some properties that don't matter
}
Run Code Online (Sandbox Code Playgroud)

将通用集合暴露给COM的最佳(或推荐方法)是什么?我们不必支持泛型,我们只需要以某种方式公开IOurListObject的集合.

我们也希望避免为我们使用的每个集合编写一个新类,但它可能是不可能的.

.net c# generics com generic-list

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

标签 统计

.net ×3

com-interop ×2

generics ×2

asp-classic ×1

c# ×1

collections ×1

com ×1

generic-list ×1

vb6 ×1