我正在开发一个项目,其中包含部分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!
答案 0 :(得分:3)
文档提供了一些示例:
答案 1 :(得分:1)
嗯,你宣布一个事件 - 事件基本上是一个添加/删除对。这就是你得到编译器错误的原因。我怀疑你可以这样做,只是没有使用你一直使用的语法。如果您无法在C ++ / CLI中实现事件,那将是非常奇怪的。
您可能希望阅读events, delegates and the differences between them上的文章。
你真正尝试做什么?你想要一个委托类型的属性吗?或者将委托类型作为参数的方法?你说你想“隐藏/提供代表” - 你到底是什么意思?
答案 2 :(得分:0)
我挖出了一篇似乎显示正确语法的文章:http://msdn.microsoft.com/en-us/magazine/cc163659.aspx