小编jon*_*tez的帖子

如何使用 Prism/DryIoC 在 Xamarin.Forms 中解决 IValueConverter 中的依赖项

我有一个 Xamarin.Forms 应用程序,它使用 Prism 和 DryIoC 作为容器。我有一个值转换器,我需要在其中使用我通过 IContainerRegistry 注册的服务。

containerRegistry.RegisterSingleton<IUserService, UserService>();
Run Code Online (Sandbox Code Playgroud)

由于 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 …
Run Code Online (Sandbox Code Playgroud)

c# prism xamarin xamarin.forms dryioc

5
推荐指数
1
解决办法
1349
查看次数

标签 统计

c# ×1

dryioc ×1

prism ×1

xamarin ×1

xamarin.forms ×1