gpt4 book ai didi

c# - Autofac 通过指定的构造函数解析类

转载 作者:行者123 更新时间:2023-11-30 21:43:51 25 4
gpt4 key购买 nike

我有以下类(class):

public abstract class UserTaskChangesObserver : IObserver
{
protected readonly IUserTaskChangesObservable UserTaskChangesObservable;
protected readonly IUserAccountChangesObservable UserAccountChangesObservable;

protected UserTaskChangesObserver(IUserTaskChangesObservable userTaskChangesObservable)
{
if (userTaskChangesObservable == null)
{
throw new ArgumentNullException(nameof(userTaskChangesObservable));
}
UserTaskChangesObservable = userTaskChangesObservable;
}

protected UserTaskChangesObserver(IUserAccountChangesObservable userAccountChangesObservable)
{
if (userAccountChangesObservable == null)
{
throw new ArgumentNullException(nameof(userAccountChangesObservable));
}
UserAccountChangesObservable = userAccountChangesObservable;
}

protected abstract void OnUserTaskChange(object sender, UserTaskEventArgs userTaskEventArgs);
protected abstract void OnUserAccountChange(object sender, UserAccountEventArgs userTaskEventArgs);
}

在从上下文解析我的 RealClass 时,是否可以说 autofac 我想使用哪个构造函数?例如,对于当前服务,我想调用第一个构造函数:

builder.RegisterType<UserTaskService>().AsSelf().As<IUserTaskChangesObservable>()
.OnActivated(args =>args.Context.Resolve<UserTaskChangesObserver>().Subscribe()).InstancePerLifetimeScope();

最佳答案

拥有两个构造函数甚至不是设计味道,正如@Lepijohnny 指出的那样,它是反模式This article详细解释了为什么这是一种反模式以及如何防止这种情况。

在您的情况下,您的类(class)似乎有两个职责。解决方案是将其拆分为两个单独的类。

关于c# - Autofac 通过指定的构造函数解析类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41343353/

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