我正在尝试使用SQlite-net-pcl存储一些数据。 当我从不同的帖子中读到时,我必须在我的主项目上创建一个接口服务,然后在我的Android和iOS项目上实现该服务。 当我尝试在Android或iOS项目上实现界面时会出现问题:
namespace DemoApplication.iOS
{
public class LocalFileHelperService : ILocalFileHelperService
{
}
}
错误CS0246类型或命名空间名称'ILocalFileHelperService' 无法找到(您是否错过了使用指令或程序集 引用?)
但是当我尝试添加引用时:
using DemoApplication.Services;
我收到以下错误:
错误CS0234类型或命名空间名称“服务”不存在于 命名空间'DemoApplication'(你错过了一个程序集 引用?)
我做错了吗?我记得在Android和iOS平台上使用另一个正确形式的框架来实现服务,但现在在MvvmCross中似乎有所不同。
有谁知道这样做的正确方法是什么?
提前致谢。
编辑:
我附上了界面定义。
namespace DemoApplication.Services
{
public interface ILocalFileHelperService
{
string GetLocalFilePath(string fileName);
}
}
答案 0 :(得分:1)
有时,在您的解决方案中添加新的.NET Standard类库时,Visual Studio的intellisense不会从参考项目中获取.NET Standard类库中代码的更改。重新启动Visual Studio似乎解决了这个问题。
关于你的第二个问题
你知道我如何注册Interfece或者mvvmcros 项目没有必要吗?
这是必要的。 MvvmCross在Setup.cs
类中提供options,允许您根据核心项目中定义的公共接口注册特定于平台的实现。
InitializeFirstChance
InitializeLastChance
对于许多对象,选择何时初始化 - 第一个或最后一个 - 无所谓。对于其他人来说,关键的选择是服务 需要在创建应用程序之前或之后可用 初始化。
示例强>
protected override void InitializeFirstChance()
{
Mvx.LazyConstructAndRegisterSingleton<ILocalFileHelperService, LocalFileHelperService >();
}