我有以下类(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/