首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用参数化构造函数的Xamarin DependencyService

使用参数化构造函数的Xamarin DependencyService
EN

Stack Overflow用户
提问于 2019-06-14 02:05:52
回答 1查看 2.3K关注 0票数 7

如何使用Xamarin Forms DependencyService通过参数化构造函数注入依赖项?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-14 02:36:45

回答

你不能。

程序集属性实现只适用于默认构造函数(也称为无参数构造函数),例如[assembly: Dependency(typeof(MyClass))]

运行时实现也只适用于默认构造函数(也称为无参数构造函数),例如Xamarin.Forms.DependencyService.Register<T>()

编辑:(突出显示Nitha Paul's question in the comments):Xamarin.Forms.DependencyService是一个Service Locator,而不是IoC Container,服务定位器不能进行依赖注入。

推荐

我建议您使用TinyIoC进行依赖注入。

以下是显示TinyIoC是用于Xamarin.Forms的最快IoC工具的性能指标:https://github.com/jsuarezruiz/xamarin-forms-perf-playground#ioc

代码语言:javascript
复制
public class App : Xamarin.Forms.Application
{
    public App()
    {
        // Register DI
        TinyIoCContainer.Current.Register<INumber>(new NumberClass(42));
        TinyIoCContainer.Current.Register<MyClass>();

        // Resolve DI
        var myClass = TinyIoCContainer.Current.Resolve<MyClass>();
        Console.Writeline(myClass.ToString()); //42

    }
}

public class MyClass
{
    readonly INumber _number;

    public int MyClass(INumber number)
    {
         _number = number;
    }

    public override ToString() => _number.Num;
}

public class NumberClass : INumber
{
    public NumberClass(int number)
    {
        Num = number;
    }

    public int Num { get; }
}

public interface INumber
{
    int Num { get; }
}
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56586251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档