简体   繁体   English

xamarin.forms mvvm 缺少默认构造函数

[英]xamarin forms mvvm Missing default constructor for

I have create a MessageCenterService interface我已经创建了一个 MessageCenterService 接口

public interface IDialogService
{
    Task Toasting(string title);
}

public class DialogService : IDialogService
{
    public async Task Toasting(string title)
    {
        using (var Dialog = UserDialogs.Instance.Toast(title, null))    
        {
            await Task.Delay(1000);
        }
    }
}   

Now I'm trying dependency inject but:现在我正在尝试依赖注入但是:

public class LoginViewModel : BaseViewModel
{
    private IDialogService _dialogService;

    public ICommand LoginCommand { get; set; }

    public LoginViewModel(IDialogService dialogService)
    {
        _dialogService = dialogService;
        LoginCommand = new Command(Login);  
    }
}   

Erro => Missing default constructor for "..LoginViewModel" Erro => 缺少“..LoginViewModel”的默认构造函数

LoginPage.xaml登录页面.xaml

  <ContentPage.BindingContext>
        <viewModels:LoginViewModel/>
  </ContentPage.BindingContext>

But if I put:但如果我把:

public LoginViewModel(){}

public LoginViewModel(IDialogService dialogService) //:Base() :this
{
    _dialogService = dialogService;
    ...
}

Error disappear but IDialogService never is instantiate _dialogService always null错误消失但IDialogService永远不会实例化_dialogService始终 null

LoginPage.xaml.cs changes not working too.. LoginPage.xaml.cs 更改也不起作用。

public LoginPage()
{
    InitializeComponent();
}

public LoginPage(IDialogService dialogService): base()
{
    InitializeComponent();
}

I am missing something?我错过了什么? Thanks in advance提前致谢

https://forums.xamarin.com/discussion/48009/pop-display-alert-message-from-viewmodel Missing Default Constructor error in Xamarin Forms Xamarin Forms -> System.MissingMethodException: Default constructor not found for [Interface] Missing Default Constructor error in Xamarin Forms https://forums.xamarin.com/discussion/48009/pop-display-alert-alert-message-message-fiewmodel 缺少默认构造构建器错误,构造构造中的Xamarin8888888888088080808080808080808080809880108801088010880108080108080988010802.880108010809830830830830830830 . 构造函数错误 Xamarin Forms

Try to use the DependencyService or 3rd party libraries like TinyIOC.尝试使用 DependencyService 或 TinyIOC 等第三方库。 Here is my sample code using the DependencyService.这是我使用 DependencyService 的示例代码。 You can register your service using DependencyService.Register<>() and simply invoke it using DependencyService.Get<>();您可以使用 DependencyService.Register<>() 注册您的服务,然后使用 DependencyService.Get<>(); 简单地调用它;

App.xaml.cs应用程序.xaml.cs

public App()
{
   ...
   DependencyService.Register<DialogService>();
   ...
}

LoginPage.xaml.cs登录页面.xaml.cs

LoginPage()
{
   InitializeComponent();
   BindingContext = new LoginViewModel();
}

LoginViewModel.cs登录视图模型.cs

private IDialogService _dialogService;

public LoginViewModel()
{
   ...
   _dialogService = DependencyService.Get<DialogService>();;
   ...
}

try private readonly IDialogService _dialogService;尝试private readonly IDialogService _dialogService;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM