如何使用autofac注入到wcf类中?

玩编程的小白 2013-10-18 02:36:27
大概是这样的代码
 public class DX : IDX
{
private readonly IDicDefService _dicdefsservice;
public DX(IDicDefService _dicdefsservice)
{
this._dicdefsservice = _dicdefsservice;
}
}

如果是一般的类,这样做没问题。
但DX是WCF服务类,不允许出现带参数的构造方法,所以不成立。
各位老鸟我该怎么办?
一个变通的方法是在构造函数里注入
类似这样的代码
 
public class DX : IDX
{
private readonly IDicDefService _dicdefsservice;
public DX()
{
var builder = new ContainerBuilder();
builder.RegisterType<DicDefService>().As<IDicDefService>();

var container = builder.Build();
_dicdefsservice=container.Resolve<DicDefService>();
}
}

这样写也不对,会报错
The requested service 'Estar.Base.Services.DicDefService' has not been registered. To avoid this exception, either register a component to provide the service, check for service registration using IsRegistered(), or use the ResolveOptional() method to resolve an optional dependency.

DicDefService类是这样的内容:

private readonly IRepositoryBase<Models_DicDefRecord> _repositoryBase;

public DicDefService(IRepositoryBase<Models_DicDefRecord> _repositoryBase)
{
this._repositoryBase = _repositoryBase;

}
...全文
247 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
星夜 2015-09-24
  • 打赏
  • 举报
回复
没有找到 AddDependencyInjectionBehavior 方法
weizengxun 2014-09-10
  • 打赏
  • 举报
回复
引入Autofac.Integration.Wcf; 在OnStart中

#region 注册各种
var builder = new ContainerBuilder();

builder.RegisterType<PetaPocoUnitOfWork>().As<IUnitOfWork>().InstancePerRequest();
builder.RegisterAssemblyTypes(Assembly.Load("Att.Implement")).Where(p => p.Name.EndsWith("Repository")).AsImplementedInterfaces();
builder.RegisterType<AttService>().As<IAttService>();

container = builder.Build();
DIContainer.Initialize(container);

if (host != null)
    host.Close();
host = new ServiceHost(typeof(AttService));
//重要
host.AddDependencyInjectionBehavior<IAttService>(container);

host.Open();
LoggerFactory.GetLogger().Error("服务已经启动");
#endregion
请参考 https://code.google.com/p/autofac/wiki/WcfIntegration

62,050

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧