gpt4 book ai didi

实现接口(interface)的类中的c#虚方法

转载 作者:行者123 更新时间:2023-11-30 14:16:05 24 4
gpt4 key购买 nike

假设我有以下类(class):

namespace myNamespace
{
[TypeLibType((short)2)]
[ClassInterface((short)0)]
[ComImport]
public class myClass : myInterface
{
public virtual void myMethod();
}
}

假设我有以下该类实现的接口(interface)

namespace myNamespace
{
[Guid("2105896C-2B38-4031-BD0B-7A9C4A39FB93")]
[TypeLibType((short)4160)]
[ComImport]
public interface myInterface
{
void myMethod();
}
}

现在,当我编译第一个类中的虚方法时,返回以下错误:

'myNamespace.myClass.myMethod()' must declare a body because it is not marked abstract, extern, or partial

这个方法应该编译得很好,因为它被标记为虚拟的,但由于某种原因它仍然无法编译,我有点不知所措,因为如果我在 MyClass 的 MyMethod 上定义一个主体,那么我而是得到以下错误:

Since 'myClass.myMethod' has the ComImport attribute, 'myNamespace.myClass.myMethod' must be extern or abstract

我正在使用 .Net 3.5 进行此设置,但它在 .Net 4.0 中仍然不起作用

最佳答案

我认为您将 virtualabstract 混淆了。虚拟方法需要一个实现,但可能被覆盖。

另一方面,抽象方法可以在没有实现的情况下声明。子类然后承担提供实现的责任,如果他们不这样做,就会遇到编译器错误。

关于实现接口(interface)的类中的c#虚方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8380230/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com