我正在尝试创建一个包含方法的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 };
}
请有人纠正我的语法。
答案 0 :(得分:1)
您必须将属性目标定义置于方法声明之上
public interface IMine
{
[DispId(1)]
[return: MarshalAs(UnmanagedType.Struct, SafeArraySubType = VarEnum.VT_ARRAY)]
object stringSize(string txt, string fontName, float fontSize)
{
// stuff...
}
}