xamarin 形式 mvvm 缺少默认构造函数
xamarin forms mvvm Missing default constructor for
我已经创建了一个 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);
}
}
}
现在我正在尝试依赖注入但是:
public class LoginViewModel : BaseViewModel
{
private IDialogService _dialogService;
public ICommand LoginCommand { get; set; }
public LoginViewModel(IDialogService dialogService)
{
_dialogService = dialogService;
LoginCommand = new Command(Login);
}
}
Erro => 缺少“..LoginViewModel”的默认构造函数
LoginPage.xaml
<ContentPage.BindingContext>
<viewModels:LoginViewModel/>
</ContentPage.BindingContext>
但是如果我输入:
public LoginViewModel(){}
public LoginViewModel(IDialogService dialogService) //:Base() :this
{
_dialogService = dialogService;
...
}
错误消失但 IDialogService 永远不会被实例化 _dialogService 始终为 null
LoginPage.xaml.cs 更改也不起作用..
public LoginPage()
{
InitializeComponent();
}
public LoginPage(IDialogService dialogService): base()
{
InitializeComponent();
}
我错过了什么?提前致谢
https://forums.xamarin.com/discussion/48009/pop-display-alert-message-from-viewmodel
Xamarin Forms -> System.MissingMethodException: Default constructor not found for [Interface]
尝试private readonly IDialogService _dialogService;
尝试使用 DependencyService 或 TinyIOC 等第三方库。
这是我使用 DependencyService 的示例代码。
您可以使用 DependencyService.Register<>() 注册您的服务,然后使用 DependencyService.Get<>();
简单地调用它
App.xaml.cs
public App()
{
...
DependencyService.Register<DialogService>();
...
}
LoginPage.xaml.cs
LoginPage()
{
InitializeComponent();
BindingContext = new LoginViewModel();
}
LoginViewModel.cs
private IDialogService _dialogService;
public LoginViewModel()
{
...
_dialogService = DependencyService.Get<DialogService>();;
...
}
我已经创建了一个 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);
}
}
}
现在我正在尝试依赖注入但是:
public class LoginViewModel : BaseViewModel
{
private IDialogService _dialogService;
public ICommand LoginCommand { get; set; }
public LoginViewModel(IDialogService dialogService)
{
_dialogService = dialogService;
LoginCommand = new Command(Login);
}
}
Erro => 缺少“..LoginViewModel”的默认构造函数
LoginPage.xaml
<ContentPage.BindingContext>
<viewModels:LoginViewModel/>
</ContentPage.BindingContext>
但是如果我输入:
public LoginViewModel(){}
public LoginViewModel(IDialogService dialogService) //:Base() :this
{
_dialogService = dialogService;
...
}
错误消失但 IDialogService 永远不会被实例化 _dialogService 始终为 null
LoginPage.xaml.cs 更改也不起作用..
public LoginPage()
{
InitializeComponent();
}
public LoginPage(IDialogService dialogService): base()
{
InitializeComponent();
}
我错过了什么?提前致谢
https://forums.xamarin.com/discussion/48009/pop-display-alert-message-from-viewmodel
尝试private readonly IDialogService _dialogService;
尝试使用 DependencyService 或 TinyIOC 等第三方库。 这是我使用 DependencyService 的示例代码。 您可以使用 DependencyService.Register<>() 注册您的服务,然后使用 DependencyService.Get<>();
简单地调用它App.xaml.cs
public App()
{
...
DependencyService.Register<DialogService>();
...
}
LoginPage.xaml.cs
LoginPage()
{
InitializeComponent();
BindingContext = new LoginViewModel();
}
LoginViewModel.cs
private IDialogService _dialogService;
public LoginViewModel()
{
...
_dialogService = DependencyService.Get<DialogService>();;
...
}