如何在托管接口类中提供委托

时间:2010-07-20 14:54:45

标签: .net delegates c++-cli

我正在开发一个项目,其中包含部分C#,托管C ++以及非托管C ++代码。我正在使用.NET 3.5。

我的编程经验更多地取决于非托管C ++方面,而我并不熟悉.NET的概念。

我的问题是:如何在托管接口类后面隐藏/提供委托。

假设我的界面看起来很......像这样...

// I guess this is a type definition so it has to be placed outside of the interface
delegate void SignalStrengthDelegate(short input);

public interface class Test
{
    event SignalStrengthDelegate^ signalStrengthChanged;

    void doSomething();
};

...然后我在实现此接口的ref类中遇到编译器错误。该错误表明我应该实现添加删除委托的方法。在尝试这样做后,编译器要求我切换到/ clr:oldSyntax ...所以这也不是我想要的。

我google了很多但是找不到任何关于我的问题的建议......在某些时候我觉得委托和接口是某种相反的概念,不应该混在一起。

有什么建议吗?

TIA!

3 个答案:

答案 0 :(得分:3)

答案 1 :(得分:1)

嗯,你宣布一个事件 - 事件基本上是一个添加/删除对。这就是你得到编译器错误的原因。我怀疑你可以这样做,只是没有使用你一直使用的语法。如果您无法在C ++ / CLI中实现事件,那将是非常奇怪的。

您可能希望阅读events, delegates and the differences between them上的文章。

真正尝试做什么?你想要一个委托类型的属性吗?或者将委托类型作为参数的方法?你说你想“隐藏/提供代表” - 你到底是什么意思?

答案 2 :(得分:0)

我挖出了一篇似乎显示正确语法的文章:http://msdn.microsoft.com/en-us/magazine/cc163659.aspx