c++ /cli接口的属性在c#中不可用
本文关键字:属性 cli 接口 c++ | 更新日期: 2023-09-27 18:17:00
Cli界面如下:
using namespace System::Timer
namespace Interfaces
{
public interface class ITimerProvider
{
property Timer AppTimer
{
Timer get();
}
}
}
从该接口派生c#类,并在VS2013中使用右键菜单中的"实现接口",它创建:
public void get_AppTimer(ref Timer value)
{
throw new NotImplementedException();
}
编译器报错"MyProject没有实现接口成员MyCLIProject.Interfaces.ITimerprovider.get_AppTimer()
"
它会这样做,即使它自己把它放在里面。
汉斯已经给出了答案。纠正接口声明会导致预期的自动生成代码,并且项目编译良好:
property Timer^ AppTimer
{
Timer^ get();
}
我认为这可能是由于Visual Studio没有为您正确生成代码。
虽然从技术上讲,属性只是get_propertyName()
和set_PropertyName()
方法的语法糖,但在实现属性时,您实际上不会在c#中编写这些方法。实现该属性的正确c#代码应该是这样的:
class MyProject
{
public Timer AppTimer
{
get
{
// return the value here
}
}
}
如果你把你的代码改成这样,应该可以修复这个错误。