0

我想为C#编写的遗留程序制作一个 Web 解析器模块,Delphi 6并决定使用COM它。C# 模块应该是类库中的 COM 服务器。有了基类型,一切都清楚了,但是如果解析器返回一个内部带有结构的对象,如何装饰 COM 类呢?返回的对象和结构是否也应该像 COM 类一样声明?

这是一段代码:

public struct SubitemParseResult
{
   public string Field1;
   public string Field2;
   public string Field3;
}

//Should it be decorated with InterfaceType and Guid too?
public class ItemParseResult
{
   public string Field1;
   public int Field2;
   public datetime Field3;
   public SubitemParseResult SubitemField;
}

[InterfaceType(ComInterfaceType.InterfaceIsDual), Guid("BBBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB")]
public interface IItemParser
{
    .................
}

[ClassInterface(ClassInterfaceType.None), Guid("AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA")]
public class ItemParser : IItemParser
{
    .....
    public ItemParseResult GetAndParse(string code)
    {
       .....
    }
    .....
}
4

1 回答 1

3

是的,这是允许客户端代码访问成员所必需的。将字段更改为属性。

在 COM 中使用结构是不确定的,因为它需要一个类型库才能使 IRecordInfo 工作,不确定您将从 Delphi 获得多少帮助。否则,它很容易被具有 3 个属性的接口替换。

于 2013-10-29T20:11:09.043 回答