我有以下课程:
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);
}
是否可以说autofac我想在从上下文中解析RealClass
时使用哪个构造函数?
例如,对于当前服务,我想调用第一个构造函数:
builder.RegisterType<UserTaskService>().AsSelf().As<IUserTaskChangesObservable>()
.OnActivated(args =>args.Context.Resolve<UserTaskChangesObserver>().Subscribe()).InstancePerLifetimeScope();
答案 0 :(得分:3)
有两个构造函数甚至不是设计气味,因为@Lepijohnny指出它是反模式。 This article详细解释了为什么这是一种反模式以及如何防止这种情况。
在你的情况下,你的班级似乎有两个责任。解决方案是将其拆分为两个单独的类。