如何从COM中隐藏GetType()方法?
我为Excel制作了一个自动化外接程序,并制作了几个函数(公式) 我有一个类,其标题如下(它是COM可见的): 在方法列表中,我看到:如何从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
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实现了方法。谢谢