gpt4 book ai didi

c# - 带有参数化构造函数的 Xamarin DependencyService

转载 作者:太空宇宙 更新时间:2023-11-03 20:49:36 25 4
gpt4 key购买 nike

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

最佳答案

回答

你不能。

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

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

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

推荐

我推荐使用 TinyIoC为您的依赖注入(inject)。

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

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; }
}

关于c# - 带有参数化构造函数的 Xamarin DependencyService,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56586251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com