0

我正在尝试创建一个包含方法的 COM 对象。该方法返回一个必须编组的数组,因为 Classic ASP 正在使用它。

我发现了有关堆栈溢出的问题,这些问题向我展示了如何针对属性而不是针对方法执行此操作。

这是我尝试过的:

public interface IMine
{
  [DispId(1)]
  object stringSize(string txt, string fontName, float fontSize)
  {
    [return: MarshalAs(UnmanagedType.Struct, SafeArraySubType = VarEnum.VT_ARRAY)]
  }
}

这显然是错误的,因为我收到了错误:

The name 'MarshalAs' does not exist in the current context

这对我来说毫无意义。

实际的方法是:

    public object stringSize(string txt, string fontName, float fontSize)
    {
        System.Drawing.SizeF result = _textSize(txt, fontName, fontSize);
        return new object[] { result.Width, result.Height };
    }

有人请纠正我的语法。

4

1 回答 1

1

您必须将属性目标定义放在方法声明之上:

public interface IMine 
{ 
  [DispId(1)]
  [return: MarshalAs(UnmanagedType.Struct, SafeArraySubType = VarEnum.VT_ARRAY)]  
  object stringSize(string txt, string fontName, float fontSize) 
  { 
    // stuff...
  } 
} 
于 2012-08-01T17:18:54.837 回答