Я создаю новый проект, используя Xamarin и .net стандарт 2.0.Мой проект имеет
- SLMobileLibrary
- SLMobileLibrary.Android
- SLMobileLibrary.iOS
Эти три проекта написаны для создания пакета NuGet, импортированного в другой проект:
- SLMobileLibraryTest
- SLMobileLibraryTest.iOS
- SLMobileLibraryTest.Android
Как видно на этом экране:

Теперь у SLMobileLibrary есть служба зависимостей:
using System;
namespace SLMobileLibrary
{
public interface ISampleLibrary
{
string HelloWorld();
}
}
SLMobileLibrary.Android имеет реализацию для Android:
using System;
using SLMobileLibrary.Android;
using Xamarin.Forms;
[assembly: Dependency(typeof(SampleLibrary))]
namespace SLMobileLibrary.Android
{
public class SampleLibrary : ISampleLibrary
{
public SampleLibrary()
{
}
public string HelloWorld()
{
return "Hello World! Android";
}
}
}
SLMobileLibrary.iOS имеет реализацию для iOS:
using System;
using SLMobileLibrary.iOS;
using Xamarin.Forms;
[assembly: Dependency(typeof(SampleLibrary))]
namespace SLMobileLibrary.iOS
{
public class SampleLibrary : ISampleLibrary
{
public SampleLibrary()
{
}
public string HelloWorld()
{
return "Hello World! iOS";
}
}
}
Итак, в моем App.cs я вспоминаю метод следующим образом:
string t = DependencyService.Get<ISampleLibrary>().HelloWorld();
На Android I 'Нет проблем, на iOS происходит сбой программы с исключением нулевого объекта, я думаю, потому что она не может найти реализацию на iOS.Но если я попытаюсь поместить SimpleLibrary.cs в SLMobileLibraryTest.iOS, все будет прекрасно.Я действительно не могу понять, почему iOS не может найти реализацию, если реализация находится в SLMobileLibrary.iOS как SLMobileLibrary.Android.
Кто-нибудь может мне помочь?Я просто прикрепил исходный код, чтобы вы могли скачать его и попробовать скомпилировать на iOS.(https://drive.google.com/open?id=12P1zu7BUiwvAkelKAI7fsCxBJYqvmpwZ).
Спасибо!