我为 Excel 制作了一个自动化插件,并制作了几个函数(公式)。
我有一个标题看起来像这样的类(它是 COM 可见的):
[ClassInterface(ClassInterfaceType.AutoDual)]
[ComVisible(true)]
public class Functions
{}
在方法列表中,我看到:
ToString(), Equals(), GetHashCode() and GetType() methods.
由于我的类的所有方法都是 COM 可见的,我应该以某种方式隐藏这 4 个。我成功使用了其中的 3 个:
ToString(), Equals(), GetHashCode()
但 GetType() 不能被覆盖。
这是我对其中 3 个所做的:
[ComVisible(false)]
public override string ToString()
{
return base.ToString();
}
[ComVisible(false)]
public override bool Equals(object obj)
{
return base.Equals(obj);
}
[ComVisible(false)]
public override int GetHashCode()
{
return base.GetHashCode();
}
这不起作用:
[ComVisible(false)]
public override Type GetType()
{
return base.GetType();
}
这是编译时 Visual Studio 中的错误消息:
..GetType()': cannot override inherited member 'object.GetType()' because it is not marked virtual, abstract, or override
那么,我应该怎么做才能从 COM 中隐藏 GetType() 方法呢?