【发布时间】:2018-09-28 06:26:55
【问题描述】:
我有一个使用 Prism 和 DryIoC 作为容器的 Xamarin.Forms 应用程序。我有一个值转换器,我需要使用我通过 IContainerRegistry 注册的服务。
containerRegistry.RegisterSingleton<IUserService, UserService>();
由于 IValueConverter 是由 XAML 而不是 DryIoC 构造的,因此我如何解决这种依赖关系而不必求助于构造函数注入?我可以在 Prism/DryIoC 中使用服务定位器吗?如果有,怎么做?
下面是值转换器代码:
public class MyValueConverter : IValueConverter
{
private readonly IUserService _userService;
public MyValueConverter()
{
// Ideally, I can use a service locator here to resolve IUserService
//_userService = GetContainer().Resolve<IUserService>();
}
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var isUserLoggedIn = _userService.IsLoggedIn;
if (isUserLoggedIn)
// Do some conversion
else
// Do some other conversion
...
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
【问题讨论】:
标签: c# xamarin xamarin.forms prism dryioc