首页 > 解决方案 > Xamarin MVVMCross:注册具有多个接口的类的单例

问题描述

我有一个类实现和 2 个接口 -

Public Interface IVehicle 
{
  void SelectVehicle(...);
}

Public Interface IDestination 
{
  void DistanceToDestination(...);
}

Public Class Travel : IVehicle, IDestination 
{

}

因为我正在使用MVVMCross,我知道如何注册一个单例并像这样解决它 -

登记 -Mvx.IoCProvider.RegisterSingleton<IVehicle>(new Travel());

解决 -Mvx.IoCProvider.Resolve<IVehicle>();

有没有办法Travel用 MVVMCross 中的两个接口注册一个类的单个实例?像这样的东西- Mvx.IoCProvider.RegisterSingleton<IVehicle, IDestination>(new Travel());

Travel以及使用两个接口解决单个实例的方法?就像是 -

var travel = Mvx.IoCProvider.Resolve<IVehicle, IDestination>();travel并 使用travel.DistanceToDestination(...);

标签: xamarinxamarin.formsmvvmcross

解决方案


而不是在每个寄存器上实例化,只需使用相同的实例:

var travel = new Travel();
Mvx.IoCProvider.RegisterSingleton<IVehicle>(travel);
Mvx.IoCProvider.RegisterSingleton<IDestination>(travel);

然后按预期解决:

var travel = Mvx.IoCProvider.Resolve<IVehicle>();

或者

var travel = Mvx.IoCProvider.Resolve<IDestination>();

推荐阅读