【发布时间】:2015-07-07 09:09:28
【问题描述】:
我正在使用 Ninject 进行 DI。其中一行给了我一个奇怪的错误:
The type SimpleTraceWriter must derive from ITraceWriter.
Parameter name: service
{"The type SimpleTraceWriter must derive from ITraceWriter.\r\nParameter name: service"}
给出错误的代码行:
config.Services.Replace(typeof(ITraceWriter), new SimpleTraceWriter(WebContainerManager.Get<ILogManager>()));
但 SimpleTraceWriter 实现了 ITraceWriter:
SimpleTraceWriter 代码:
public class SimpleTraceWriter : ITraceWriter
{
private readonly ILog _log;
public SimpleTraceWriter(ILogManager logManager)
{
_log = logManager.GetLog(typeof(SimpleTraceWriter));
}
public void Trace(HttpRequestMessage request, string category, TraceLevel level, Action<TraceRecord> traceAction)
{
var rec = new TraceRecord(request, category, level);
traceAction(rec); WriteTrace(rec);
}
...
ITraceWriter 代码:
public interface ITraceWriter
{
void Trace(HttpRequestMessage request, string category, TraceLevel level, Action<TraceRecord> traceAction);
}
【问题讨论】:
-
您确定在您的配置中您没有引用来自不同命名空间的
ITraceWriter? -
是的,我做得很快 我选择了错误的命名空间
Newtonsoft.Json.Serialization而不是System.Web.Http.Tracing;谢谢大家:)
标签: c# dependency-injection ninject asp.net-web-api2