无法使用 C++/CLI 界面的属性
Unable to use properties from C++/CLI interface
我有一个混合模式 C++/CLI class 和我想从 C# 使用的接口。接口定义如下:
public interface class IMapRenderingInterfacer
{
...
property int CurrentCacheSize { int get(); };
...
};
实现 class 在其头文件中有此声明:
public ref class MapRenderingInterfacer : public IMapRenderingInterfacer
{
...
public:
virtual property int CurrentCacheSize { int get(); }
...
};
属性 的实现在 cpp 文件中:
int MapRenderingInterfacer::CurrentCacheSize::get()
{
return (*_nativeMapRenderingInterface)->getCurrentCacheSize()/1000000;
}
编译时没有错误或警告,但是当我尝试从 C# class 使用此 属性 时,出现以下错误:
错误 CS1061 'IMapRenderingInterfacer' 不包含 'CurrentCacheSize' 的定义,并且找不到接受类型 'IMapRenderingInterfacer' 的第一个参数的扩展方法 'CurrentCacheSize'(您是否缺少using 指令还是程序集引用?)
此接口还包含许多我可以在 C# 中很好地使用的方法,但不是这个 属性。
有什么想法吗?
Hans Passant
做对了!它只是一个指向错误版本的混合模式程序集的项目引用。在项目中删除并再次添加引用成功了!
我有一个混合模式 C++/CLI class 和我想从 C# 使用的接口。接口定义如下:
public interface class IMapRenderingInterfacer
{
...
property int CurrentCacheSize { int get(); };
...
};
实现 class 在其头文件中有此声明:
public ref class MapRenderingInterfacer : public IMapRenderingInterfacer
{
...
public:
virtual property int CurrentCacheSize { int get(); }
...
};
属性 的实现在 cpp 文件中:
int MapRenderingInterfacer::CurrentCacheSize::get()
{
return (*_nativeMapRenderingInterface)->getCurrentCacheSize()/1000000;
}
编译时没有错误或警告,但是当我尝试从 C# class 使用此 属性 时,出现以下错误:
错误 CS1061 'IMapRenderingInterfacer' 不包含 'CurrentCacheSize' 的定义,并且找不到接受类型 'IMapRenderingInterfacer' 的第一个参数的扩展方法 'CurrentCacheSize'(您是否缺少using 指令还是程序集引用?)
此接口还包含许多我可以在 C# 中很好地使用的方法,但不是这个 属性。
有什么想法吗?
Hans Passant 做对了!它只是一个指向错误版本的混合模式程序集的项目引用。在项目中删除并再次添加引用成功了!