Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Prism.Autofac.Forms实现

Prism.Autofac.Forms实现
EN

Stack Overflow用户
提问于 2017-01-25 14:53:35
回答 2查看 2.3K关注 0票数 2

我正在开发两个应用程序。其中一个是在WPF中使用Prism.Autofac,另一个是用Prism.Unity以Xamarin形式开发的。

这两个应用程序都可以工作,但我有一个PCL,我根据情况使用编译器语句来使用Prism.Autofac或Prism.Unity.Forms。

我正在尝试在这两个应用程序中实现Autofac,但是我不知道如何在Xamarin.Forms上注册类型。

例如,在Unity中,我这样做:

代码语言:javascript
运行
AI代码解释
复制
Container.RegisterInstance(Xamarin.Forms.DependencyService.Get<SomeService>()); 

但是对于Autofac来说,"RegisterInstance“方法并不存在。我尝试了很多方法来实现这一点,我发现ContainerBuilder类有这个方法,但是如果我这样做:

代码语言:javascript
运行
AI代码解释
复制
ContainerBuilder builder = new ContainerBuilder();
builder.RegisterInstance(Xamarin.Forms.DependencyService.Get<SomeService>());

使用ContainerBuilder实例时,PRISM Container不能像注册实例那样识别我的自定义类/服务,因此无法创建视图模型的构造函数。

因此,我的问题是:如何才能将RegisterInstance和RegisterType方法仅用于PRISM Container (没有ContainerBuilder实例)?如果这是不可能的,我必须创建一个ContainerBuilder的实例,PRISM容器如何“注册”我的自定义类型?

提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-26 01:52:18

Autofac for Prism Forms有很大的问题。为了将v6.X中的类型注册到Prism.Autofac.Forms,你需要编写类似这样的代码:

代码语言:javascript
运行
AI代码解释
复制
public class App : PrismApplication
{
    protected override void RegisterTypes()
    {
        var builder = new ContainerBuilder();
        Container.RegisterTypeForNavigation<MainPage>()
        builder.RegisterType<MyService>().As<IMyService>();
        builder.Update( Container );
    }
}

从v7.0开始,这一点已经更新。注意,正如下面的评论之一指出的那样,Autofac已经弃用了builder.Update,因为Autofac社区希望使容器不可变。这使得它对于想要利用棱镜的模块化的棱镜应用程序来说是一个糟糕的选择。在Prism 7中,Autofac的基本应用程序类的实现已经进行了更新,以考虑到这一点,并为您提供了单个ContainerBuilder,用于Prism的基本注册以及共享代码和IPlatformInitializer中的任何特定类型。请记住,在到达OnInitialized之前,容器并不是实际构建和可用的。更新后的注册将如下所示:

代码语言:javascript
运行
AI代码解释
复制
public class App : PrismApplication
{
    protected override void RegisterTypes()
    {
        Builder.RegisterTypeForNavigation<MainPage>()
        Builder.RegisterType<MyService>().As<IMyService>();
    }
}

您可以在此处阅读v7更改:

https://dansiegel.net/post/2017/08/02/breaking-changes-for-prism-autofac-users

票数 2
EN

Stack Overflow用户

发布于 2017-10-20 11:18:07

更新现在已经过时了,对我来说最好的方法是创建一个模块,看:

首先在你的项目中创建一个模块:

代码语言:javascript
运行
AI代码解释
复制
public  class ExampleModule : Module
{
    protected override void Load(ContainerBuilder builder)
    {
        builder.RegisterType<LoginP>().As<ILoginP>().InstancePerDependency();
        base.Load(builder);
    }
}

在表示层中,包含模块示例(xamarin.Android mainActivity.cs):

代码语言:javascript
运行
AI代码解释
复制
public class AndroidInitializer : IPlatformInitializer
{
    public void RegisterTypes(IContainer container)
    {
        var builder = new ContainerBuilder();
        builder.RegisterModule<ExampleModule>();
        builder.Update(container);
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41854643

复制
相关文章
[Silverlight动画]转向行为 - 路径跟随
路径跟随这名字一听就知道要干嘛了:机车会沿着一个预定的路线行驶。虽然在地图或者游戏中,路径是以图形的形式被表示的,而在转向行为中,其不过是一系列航点。 其策略真是简单到不行。只要从第一个航点开始挨个寻找下去即可。 private int _pathIndex = 0; private double _pathThreshold = 20; public void followPath(List<Vector2D> path,bool loop) {
用户1172164
2018/01/16
9820
Java 查找 List 中的最大值、最小值Java 查找 List 中的最大值、最小值
Java 查找 List 中的最大值、最小值 java> List<Long> list = new ArrayList(); java.util.List<java.lang.Long> list = [] java> list.add(1L) java.lang.Boolean res1 = true java> list.add(2L) java.lang.Boolean res2 = true java> Collections.max(list) java.lang.Long res3 = 2 j
一个会写诗的程序员
2018/08/17
3.9K0
Excel公式技巧54: 在多个工作表中查找最大值/最小值
要在Excel工作表中获取最大值或最小值,我们马上就会想到使用MAX/MIN函数。例如,下图1所示的工作表,使用公式:
fanjy
2020/09/17
11.9K0
Excel公式技巧54: 在多个工作表中查找最大值/最小值
较快速在一个数组中查找最大值和最小值
#include<stdio.h> #define MAX 100001 int a[MAX]; int n; /* 时间复杂度为3*n/2 */ void swap(int i) { if(i==n-1) return ; if(a[i]>a[i+1]) { int temp=a[i]; a[i]=a[i+1]; a[i+1]=temp; } } void sort() { int i; for(i=0;i<n;i++) { swap(i); i++; }
chain
2018/08/02
3.7K0
多个必经边的最短路径
问题: 多个必经边、必经点的约束 S 到 E 的最短加权路径: [0, 2, 4, 5, 6, 7, 8, 14, 13, 12, 16, 17] S 到 E 的最短加权路径长度: 13
裴来凡
2022/05/29
3370
多个必经边的最短路径
ArangoDB Restful API
ArangoDB 除了提供 Web 和 shell 接口来管理数据库之外,还可以使用 Restful API 的方式来管理数据库。
kongxx
2020/02/18
1.1K0
【详解】图数据库 | 灵活存储复杂关联关系
从事10年JAVA研发工作,架构经验丰富,目前担任京东物流逆向创新业务团队leader,负责京东国际化逆向物流相关研发工作。
京东技术
2018/07/30
4.2K0
【详解】图数据库 | 灵活存储复杂关联关系
ArangoDB安装
ArangoDB的安装还是挺简单的,官方给了各个平台的安装包,下面是在CentOS8上面安装的步骤。
kongxx
2020/02/18
9160
较快速在一个数组中查找最大值和最小值(2)
/*分治法*/ #include<iostream> #include<string> #include<vector> #include<fstream> using namespace std; int a[16]={1,3,5,7,9,11,14,2,4,6,8,10,12,14,16,18}; int b[9]={3,1,5,9,4,2,7,6,10}; int t[2]; vector<string> splitEx(const string& src, string separate_chara
chain
2018/08/02
2.6K0
路径查找器AI
问题源于我想建立一个游戏AI,它要能够定义一条从起点到终点的路径,同时避开路上的墙壁障碍物。为此,我写了一个C#库(path.dll),它允许定义一个二维空间(MAXX,MAXY),并为这个空间设立一些矩形的“墙“。在添加完所有的墙后,path类将计算能够绕过墙的AI所有“可见”的AI节点(可见指节点之间没有墙)之间是连接的。这个类实现了一个路径查找算法,使用C#的Delegates(委托)与AI节点实例进行通信。最后,使用这个O_O算法(扩展欧几里得算法)将会得到一个子类,它是所节点的下一个目的AI节点的集合。在示例图中,可以看到墙(橙色),AI NODES(红色),起点(蓝色)和终点(蓝色)。
东心木水
2018/01/29
1.4K0
路径查找器AI
在Python中实现线性查找
线性查找算法是最简单的查找算法之一。线性查找算法的输入是一个数组或列表和项,该算法查找数组中是否存在该项。如果找到该项,则返回其索引;否则,可以返回null或你认为在数组中不存在的任何其他值。
fanjy
2022/11/16
3.2K0
在Python中实现线性查找
ArangoDB集合操作
通常我们可以通过 ArangoDB 提供的 Web 接口来对 ArangoDB 进行监控和管理。但今天来看看怎样通过 arangosh 的方式来对数据库进行操作。
kongxx
2020/02/18
1K0
ArangoDB文档操作
通过ArangoDB提供的shell终端,我们可以执行很多文档集合操作,下面就看看一些常用的方法。
kongxx
2020/02/18
9060
经典算法题-矩阵中查找单词路径数
1.问题描述 Problem Statement 问题陈述 You are given a String[] grid representing a rectangular grid of letters. You are also given a String find, a word you are to find within the grid. The starting point may be anywhere in the grid. The path may move up, down, l
cwl_java
2020/03/19
1.1K0
关于在vim中的查找和替换
在normal模式下按下/即可进入查找模式,输入要查找的字符串并按下回车。 Vim会跳转到第一个匹配。按下n查找下一个,按下N查找上一个。
休辞醉倒
2019/07/25
26.1K0
禁止点或禁止边的最短路径
问题: 禁止点或禁止边的约束 S 到 E 的最短加权路径: [0, 3, 6, 12, 16, 17] S 到 E 的最短加权路径长度: 7
裴来凡
2022/05/29
1K0
禁止点或禁止边的最短路径
使用Visual Studio 部署SharePoint时提示“路径中具有非法字符”
在使用VS 2012部署或发布SharePoint时,提示“路径中具有非法字符”(英文提示“Illegal characters in path”),找了半天,才找到答案。
雪雁-心莱科技
2018/12/27
1.9K0
【剑指offer:在排序数组中查找数字】搜索左右边界:从两边向中间、二分查找
二分查找一般用来查找数字在有序数组中是否出现过。进一步想,它可以用来不断在子序列中搜索对应数字。所以,我们就可以用它来向左边子序列中不断搜索,确认左边界;同样的思路,确认右边界。
心谭博客
2020/04/21
1.5K0
Mysql.ini 路径查找
Windows环境经常在常规路径下找不到Mysql.ini的配置文件,实在是很恶心。我们需要通过一下步骤来查找。
收心
2022/01/14
3.3K0
Mysql.ini 路径查找
TextBind:在开放世界中多轮交织的多模态指令跟随
拥有指令跟随能力的大型语言模型已经彻底改变了人工智能领域。这些模型通过其自然语言界面展现出卓越的通用性,能够应对各种现实世界任务。
zenRRan
2023/09/21
4160
TextBind:在开放世界中多轮交织的多模态指令跟随

相似问题

ArangoDb得到具有性质的边

11

Arangodb查找条件最短路径

132

在ArangoDB中查找具有非唯一属性的文档

23

ArangoDB-重复边

22

如何在路径中查找边

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文