Допустим, у меня есть следующий класс:
namespace myNamespace
{
[TypeLibType((short)2)]
[ClassInterface((short)0)]
[ComImport]
public class myClass : myInterface
{
public virtual void myMethod();
}
}
и скажем, у меня есть следующий интерфейс, который реализует этот класс
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
Этот метод должен прекрасно компилироваться, потому что он помечен как виртуальный, но по какой-то причине он все равно не будет компилироваться, и я в некотором затруднении: почему, если я альтернативно определю тело в MyMethod в MyClass, тогда я вместо этого получите следующую ошибку:
Since 'myClass.myMethod' has the ComImport attribute, 'myNamespace.myClass.myMethod' must be extern or abstract
Я использую .Net 3.5 для этой настройки, но он все еще не работает в .Net 4.0 либо