首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在已解析的子作用域中设置活动的租户

在已解析的子作用域中设置活动的租户
EN

Stack Overflow用户
提问于 2019-06-26 13:11:46
回答 1查看 166关注 0票数 1

是否有一种方法可以在子作用域中设置活动租户?我以为它会产生全局影响,但在子范围(ILifetimeScope)已经解决之后就没有了。

依赖关系

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<package id="Autofac" version="4.9.2" targetFramework="net471" />
<package id="Autofac.Multitenant" version="4.2.0" targetFramework="net471" />

再生产

使用.net框架控制台应用程序编写的再现和上面列出的依赖项。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
using Autofac;
using Autofac.Multitenant;

namespace ConsoleAutoFacTenants
{
    class Program
    {
        static void Main(string[] args)
        {
            var builder = new ContainerBuilder();
            builder.RegisterType<GeneralReader>().As<IReader>().InstancePerDependency();
            var appContainer = builder.Build();

            var tenantIdentifier = new AutomationTenantStrategy();
            var mtc = new MultitenantContainer(tenantIdentifier, appContainer);

            mtc.ConfigureTenant("1", b => b.RegisterType<SpecificReader>().As<IReader>().InstancePerDependency());

            // expected
            var reader1 = mtc.Resolve<IReader>();
            System.Diagnostics.Debug.Assert(reader1.Name == "General");

            // unexpected result in debug.assert, assumed that reader2 would resolve type SpecificReader
            var childScoped = mtc.BeginLifetimeScope();
            tenantIdentifier.TenantId = "1";
            var reader2 = childScoped.Resolve<IReader>();
            System.Diagnostics.Debug.Assert(reader2.Name == "Specific");
        }
    }
    internal sealed class AutomationTenantStrategy : ITenantIdentificationStrategy
    {
        public object TenantId { get; set; }
        public bool TryIdentifyTenant(out object tenantId)
        {
            var activeTenant = this.TenantId;
            if (TenantId == null)
            {
                tenantId = null;
                return false;
            }
            tenantId = activeTenant;
            return true;
        }
    }
    public interface IReader
    {
        string Name { get; }
    }
    public sealed class GeneralReader : IReader
    {
        public string Name => "General";
    }
    public sealed class SpecificReader : IReader
    {
        public string Name => "Specific";
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-27 03:45:33

当您从一个范围解析一个ILifetimeScope时,它将返回自己,而不是创建一个子生命录像。

这一行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var childScoped = mtc.Resolve<ILifetimeScope>();

应代之以

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var childScoped = mtc.BeginLifetimeScope();

创建新LifetimeScope时,多租户模块将将tenantId设置为作用域。在您的示例中,您必须在创建子tenantId之前“更改”LifetimeScope

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tenantIdentifier.TenantId = "1";
var childScoped = mtc.BeginLifetimeScope();

然后,解析的IReader将是为租户指定的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56780950

复制
相关文章
JQuery 学了不亏
jQuery是JavaScript的工具库,对原生JavaScript中的DOM操作、事件处理、包括数据处理和Ajax技术等进行封装,提供更完善,更便捷的方法。
杨丝儿
2022/02/24
1.8K0
JQuery 学了不亏
JQuery 事件绑定不生效
一个同时问我,JQuery事件绑定为什么不生效,最好通过查找,发现了问题。 一般而言,JQuery事件绑定不生效,是一些新手经常遇到的问题,其实都是简单的问题,大概分两种情况。 先上代码,以下两个button的事件绑定都不生效。
用户3158888
2019/05/29
2.6K0
Windows凭据不工作
如果不是敲错IP、用户名、密码,报凭据不工作,一般情况下执行这几句命令后重启远程服务就正常了
Windows技术交流
2021/06/15
6.1K0
No visible @interface for '***' declares the selector '***'
今天写代码遇到一个如下编译错误: No visible @interface for 'IVDevMgr' declares the selector 'setTimeZoneWithTimeZone:to:responseHandler:'
韦弦zhy
2020/12/09
2.3K0
checkbox选中和不选中 jqu_jquery checkbox 选中不选中
jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架)。jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。
全栈程序员站长
2022/09/07
2.9K0
RDP你的凭据不工作/RDP密码不刷新
如果你不属于上述的情况,请查看:https://learn.microsoft.com/zh-cn/windows-server/remote/remote-desktop-services/troubleshoot/rdp-error-general-troubleshooting#check-whether-a-group-policy-object-gpo-is-blocking-rdp-on-a-local-computer
阿龙w
2022/12/02
12.7K0
RDP你的凭据不工作/RDP密码不刷新
只会用jQuery前端到底low不low?
如果你之前没有看过我的《前端工程师如何月薪过4万》这里建议大家仔细读读,因为里面有整个前端工程师成长的技术路线图和我的故事。同时很多小伙伴问我的学历后来没再考考么,我是考了成考的北京航空航天大学,也马上快毕业了。不过我觉得这件事不足为提,因为国内的高等教育你们懂的。这里我们开始从0来讨论一下初期从事前端用jQuery多是不是真的很low。
疯狂的技术宅
2019/03/28
1.1K0
只会用jQuery前端到底low不low?
checkbox选中和不选中 jqu_jquery怎么设置checkbox不选中?
1、设置不选中:$(“#my-checkbox”).prop(“checked”,false);
全栈程序员站长
2022/09/14
3.7K0
jquery getJSON不执行问题解决
你可以在原回调函数里面加句alert(“回调成功”) , 来确定一下是否调用了回调函数,如果没有调用,则仔细检查你的JSON数据格式
莫斯
2020/09/09
1.3K0
设置 CUDA_VISIBLE_DEVICES
服务器中有多个GPU,选择特定的GPU运行程序可在程序运行命令前使用:CUDA_VISIBLE_DEVICES=0命令。0为服务器中的GPU编号,可以为0, 1, 2, 3等,表明对程序可见的GPU编号。
为为为什么
2022/08/06
9.3K0
去水印--《On the Effectiveness of Visible Watermarks》
本文提出了一种通用的、可扩展的、鲁棒的数字水印算法,该算法可以很好地处理图像、视频和音频中的视觉和听觉水印。该算法基于图像、视频和音频的物理特性,使用基于物理的生成对抗网络来生成水印。该算法还利用自适应参数优化来生成高质量的数字水印,并具有良好的不可见性和鲁棒性。该算法可以用于各种数字媒体内容的所有者保护和数字营销等应用领域。
用户1148525
2018/01/03
2.3K0
去水印--《On the Effectiveness of Visible Watermarks》
128 天不上班不工作:照样领工资 9.5 万
原告:北京和风畅想科技有限公司 被告:杜某,男,1988年出生 和风畅想公司向法院提出诉讼请求: 1、判决无须撤销《解除劳动关系通知书》,双方无需继续履行劳动合同; 2、判决和风畅想公司无须向杜某支付自2020年2月29日至2020年7月5日期间工资收入损失95172.41元。 事实和理由: 2020年11月2日,和风畅想公司收到北京市朝阳区劳动人事争议仲裁委员会作出的京朝劳人仲字[2020]第16281号裁决书(以下简称“第16281号裁决书”),和风畅想公司不服该裁决。 不服裁决理由: 一、第1628
云头条
2022/10/09
2.2K0
128 天不上班不工作:照样领工资  9.5 万
jquery关于checkbox选中和不选中的问题
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/148481.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/07
1.9K0
好用的jQuery工作进度条
对于进度条,在HTML5下有个新标签就是用来呈现任务的进度,鉴于目前很多旧式浏览器还不完全支持HTML5,大家都喜欢用javascript和css实现进度条的功能。上周我在做OA里面的任务管理时,通过比较jQuery UI自带的[URL=http://jqueryui.com/progressbar]progress bar[/URL]还有jQuery easyui中的[URL=http://www.jeasyui.com/documentation/progressbar.php]progress bar[/URL],发现都不太符合我的需求,最后找到一个特别简单的实现,只需几行代码即可,读懂英文的看这里[URL=http://workshop.rs/2012/12/animated-progress-bar-in-4-lines-of-jquery/]ANIMATED PROGRESS BAR IN 4 LINES OF JQUERY[/URL],也可以看GitHub上的网址:[URL=https://github.com/kopipejst/progressbar]https://github.com/kopipejst/progressbar[/URL]
崔文远TroyCui
2019/02/26
9110
jquery之节点获取和font标签不推荐使用
获取startDateText值为<p style="color: red">*</p>有效时间
周杰伦本人
2023/10/12
1970
webpack的watch选项不工作原因分析
今天尝试将以前创建的一个前端项目改为webpack编译,该项目使用了VueJS v2.0,原来是编写gulp脚本完成构建的。很自然就直接用vue-cli来搞定这个事了。 使用vue-cli创建项目 因为以前用过webpack,而vue-cli创建的项目底层其实还是使用webpack构建的,所以使用起来还是很简单的。 # 使用yarn,这个命令是跟npm兼容的,但速度快很多,而且可以保证依赖包版本的一致性,强烈推荐 yarn install --global vue-cli vue-cli webpack v
jeremyxu
2018/05/10
4.1K0
display:none与visible:hidden的区别
display:none和visible:hidden都能把网页上某个元素隐藏起来,但两者有区别:
跟着阿笨一起玩NET
2018/09/19
6890
SpringBoot之class is not visible from class loader
最近在搭建SpringBoot的新应用,遇到个有意思的问题,如题就是在加载某一个类时候抛出了class is not visible from class loader, 下面就带大家看看是如何产生的。
加多
2018/09/06
2.4K0
SpringBoot之class is not visible from class loader
点击加载更多

相似问题

jquery.visible不工作

12

jquery显示不工作;visible="false“不工作。

34

jQuery `.is(":visible")`在Chrome中不工作

121

Jquery IE7 (:"Visible")验证器不工作

11

Wordpress visibility=>visible不工作

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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