COM服务器在C#中返回的对象或结果结果

时间:2013-10-29 20:02:44

标签: c# object com struct

我想为用C#编写的遗留程序制作一个Delphi 6网络解析器模块,并决定使用COM。 C#模块应该是类库中的COM服务器。对于基类型,一切都很清楚,但是如果解析器返回一个带有struct的对象,如何装饰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)
    {
       .....
    }
    .....
}

1 个答案:

答案 0 :(得分:3)

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

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