Я сделал надстройку автоматизации для 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
Итак, что я должен сделать, чтобы скрыть метод GetType () от COM?