我有服务
Fragments
如您所见,我尝试注入我的解析器的泛型类型。
public class CircleProfileService : CircleService<ICircleProfileInput, ICircleProfileOutput, ICircleProfile>, ICircleProfileService
{
public CircleProfileService(ICircleProfileQueryBuilder queryBuilder,
ICircleQueryProcessor queryProcessor,
ICircleParser<ICircleProfile> parser)
: base(queryBuilder, queryProcessor, parser)
{
}
... other methods
}
以下是我如何注册我的通用类型(Autofac文档中的所有内容)
public interface ICircleParser<out TOutput> where TOutput : ICircleParsedOutput
{
IEnumerable<TOutput> Parse(string json);
}
public class CircleParser<TOutput> : ICircleParser<TOutput> where TOutput: ICircleParsedOutput, new()
//new() is only one option to make project buildable as jsonParser want non-abstract type...
{
private readonly IJsonParser jsonParser;
public CircleParser(IJsonParser jsonParser)
{
this.jsonParser = jsonParser;
}
public IEnumerable<TOutput> Parse(string json)
{
return jsonParser.Parse<TOutput>(json);
}
}
但是这总是抛出无法注入解析器的异常......
我做错了什么?
错误:
Autofac.Core.DependencyResolutionException:没有使用&#39; Autofac.Core.Activators.Reflection.DefaultConstructorFinder&#39;找到的构造函数。 on type&#39; MyProj.Services.DataServices.Circle.CircleProfileService&#39;可以使用可用的服务和参数调用: 无法解析参数&#39; MyProj.Services.DataServices.Circle.Parsers.Interfaces.ICircleParser
builder.RegisterGeneric(typeof(CircleParser<>)).As(typeof(ICircleParser<>));
1 [MyProj.Services.DataServices.Circle.Outputs.Interfaces.ICircleProfile])&#39;。
答案 0 :(得分:0)
无法对代表发表评论,所以我不得不发帖。
你对IJsonParser
有约束力吗?如果没有,则需要添加一个,以便autofac可以将其实现注入CircleParser