Сбой внедрения зависимостей Xamarin - сбой при попытке получить реализацию для конкретной платформы - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть интерфейс Xamarin Forms, который определяет контроллер Bluetooth.Я использую обычную технику, когда пытаюсь создать специфичную для Android реализацию этого (я также сделаю iOS, когда получу эту работу).

Я определяю свой интерфейс следующим образом:

namespace ArduinoRobotController.Models
{
    public interface BluetoothControllerInterface
    {
         List<string> GetPairedDevices();
..

Затем у меня есть реализация для моей платформы, подобная этой:

[assembly: Xamarin.Forms.Dependency(typeof(BluetoothControllerInterface))]
namespace ArduinoRobotController.Droid.Implementations
{
    public class BluetoothController : BluetoothControllerInterface
    {
..

Затем, наконец, вернемся к одной из моих моделей представлений, у меня есть этот код для получения нужного экземпляра для платформы:

BluetoothControllerInterface bt = Xamarin.Forms.DependencyService.Get<BluetoothControllerInterface>();

Он строит и работает, но вылетает в строке выше.Состояния ошибки:

System.MissingMethodException: не найден конструктор по умолчанию для типа ArduinoRobotController.Models.BluetoothControllerInterface в SystemRuntimeType.CreateInstanceMono

.. и т. Д.

1017

Я пробовал много разных способов сделать это, в том числе вызывать, чтобы зарегистрировать реализацию в обычном коде, а не как [assembly и т. Д. Любая помощь в этом действительно приветствуется.

1 Ответ

0 голосов
/ 15 февраля 2019

ваша регистрация должна указывать на конкретный класс, а не на интерфейс

[assembly: Xamarin.Forms.Dependency(typeof(BluetoothController))]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...