如何从COM中隐藏GetType()方法?

如何从COM中隐藏GetType()方法?,com,hide,excel-formula,gettype,Com,Hide,Excel Formula,Gettype,我为Excel制作了一个自动化外接程序,并制作了几个函数(公式) 我有一个类,其标题如下(它是COM可见的): 在方法列表中,我看到: ToString(), Equals(), GetHashCode() and GetType() methods. 因为我的类的所有方法都是COM可见的,所以我应该以某种方式隐藏这4个方法。 我成功地完成了其中3项: ToString(), Equals(), GetHashCode() [ComVisible(false)] public over

我为Excel制作了一个自动化外接程序,并制作了几个函数(公式)

我有一个类,其标题如下(它是COM可见的):

在方法列表中,我看到:

 ToString(), Equals(), GetHashCode() and GetType() methods.
因为我的类的所有方法都是COM可见的,所以我应该以某种方式隐藏这4个方法。 我成功地完成了其中3项:

ToString(), Equals(), GetHashCode()
 [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();
 }
但是不能重写GetType()

以下是我对其中3个所做的:

ToString(), Equals(), GetHashCode()
 [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()方法呢?

我认为COM使用了接口并隐藏了实现,所以我会这样做。据我所知,无法将GetType隐藏为fas。

您应该引入一个新的COM接口,并使用继承从中继承类。这样,您将只公开该接口中的方法。

伙计们,你们都是对的!我像你说的那样实现了-接口没有ToString()等等。。。只有我需要的方法。在我的类中,我设置了:[ClassInterface(ClassInterfaceType.None)][ComVisible(true)]公共类函数:IFunctions,我从IFunctions实现了方法。谢谢