MVVMCross-在另一个程序集中自动注册单例

See*_*ain 2 mvvmcross

我有一个与核心项目位于不同项目的服务(因此程序集也不同)。

我可以手动注册单身人士 RegisterSingleton<>()

但是我希望标准的linq查询能够为我解决这个问题: CreatableTypes().EndingWith("Service").AsInterfaces().RegisterAsLazySingleton();

问题是可创建的类型仅在当前程序集中显示。使用反射过载的最佳方法是什么?

我研究了从此问题获取组装件的解决方案,但它们在PCL内不起作用。

And*_*son 5

CreateableTypes()有一个CreateableTypes(Assembly assembly)可以使用的重载。要获得您的服务是从PCL项目位于组装,你应该能够使用GetTypeInfo().Assembly你的服务类型(参见 SO答案)。

因此,得出以下结论:

var assembly = typeof(ResidingInAnotherAssemblyService).GetTypeInfo().Assembly;
CreatableTypes(assembly).EndingWith("Service").AsInterfaces().RegisterAsLazySingleton();
Run Code Online (Sandbox Code Playgroud)