【发布时间】:2019-02-21 03:07:10
【问题描述】:
所以我有一个使用 Autofac 的控制台应用程序。
我的控制台应用程序设置如下:
我有一个名为 ContainerConfig 的类 - 在这我有我所有的构建器注册:
public static class ContainerConfig
{
public static IContainer Configure()
{
var builder = new ContainerBuilder();
builder.Register(c => new MatchRun()).As<MatchRun>).SingleInstance();
builder.RegisterType<AuditLogic>().As<IAuditLogic>();
builder.RegisterType<AuditRepository>().As<IAuditRepository>();
builder.RegisterType<ValidationLogic>().As<IValidationLogic>();
return builder.Build();
}
}
我的主要应用如下:
private static void Main(string[] args)
{
var container = ContainerConfig.Configure();
using (var scope = container.BeginLifetimeScope())
{
var app = scope.Resolve<IApplication>();
app.Run(args);
}
}
问题是我连接了 WCF 服务。这是我的 AuditRepository。 (仅供参考 - 我已经多年没有接触过 WCF,所以我已经忘记了我所知道的大部分内容)。
它当前的构造是为了在我每次调用该客户端时创建和处置代理。这个功能 - 主要是。
看起来像这样:
public string GetStuff(string itemA, string itemB)
{
try
{
GetProxy();
return _expNsProxy.GetStuff(itemA, itemb);
}
catch (Exception ex)
{
IMLogger.Error(ex, ex.Message);
throw ex;
}
finally
{
// CloseProxyConn();
}
}
我想知道的是,我能用 Autofac 做得更好吗 - 创建单个实例而不是持续打开关闭 - 还是我完全疯了?我知道我并没有完全正确地提出这个问题 - 不是 100% 确定如何实际说出这个问题。
谢谢
【问题讨论】: