依赖服务

时间:2020-03-19 11:09:50

标签: c# xamarin xamarin.forms

我需要DependencyService才能使用特定的android功能。

调试后,我看到DependencyService被调用,App也被调用。

为什么DependencyService.Get<T>()呼叫App()

IMyService.cs

namespace SampleM3Scan.MobileApp.Services
{
    public interface IMyService
    {
    }
}

MyService.cs

using Android.Content;
using App1.MobileApp.Droid;
using App1.MobileApp.Services;
using Xamarin.Forms;

[assembly: Dependency(typeof(MyService))]
namespace App1.MobileApp.Droid
{
    internal class MyService : IMyService
    {
        private readonly MyReceiver _myReceiver = new MyReceiver();

        public class MyReceiver : BroadcastReceiver
        {
            private readonly App app = new App();

            public override void OnReceive(Context context, Intent intent)
            {
                MessagingCenter.Send(app ,"item", intent.GetStringExtra("item"));
            }
        }
    }
}

MainPage.xaml.cs

using System.ComponentModel;
using App1.MobileApp.Pages.Base;
using App1.MobileApp.Services;

namespace App1.MobileApp.Pages.Main
{
    [DesignTimeVisible(false)]
    public partial class MainPage : PageBase
    {
        public MainPage()
        {
            InitializeComponent();
            var myService = DependencyService.Get<IMyService>();
            BindingContext = new MainPageViewModel(myService);
        }
    }
}


1 个答案:

答案 0 :(得分:1)

var myService = DependencyService.Get<IMyService>();

将提供您的IMyService的实例。 根据您的情况,IMyService将创建一个新的MyService 正如您在MyService中看到的那样,您具有以下行:

 private readonly App scanApp = new App();

每次需要创建新的MyService类实例时,都会创建一个新应用。