【发布时间】:2011-11-28 11:29:35
【问题描述】:
我之前没用过Windsor,但是用过其他的DI框架,现在遇到了一个比较奇怪的问题。
我有一个工厂类,它在其构造函数中接受一个字符串,但是每当我尝试解析该对象时,我都会收到一个异常消息:
Handler for System.String was not found.
<Message>Handler for System.String was not found.</Message>
<StackTrace>at Castle.MicroKernel.Resolvers.DefaultDependencyResolver
.TryGetHandlerFromKernel(DependencyModel dependency, CreationContext context)
in d:\60b7fa65294e7792\src\Castle.Windsor\MicroKernel\Resolvers\DefaultDependencyResolver.cs:line 403
at Castle.MicroKernel.Resolvers.DefaultDependencyResolver.ResolveCore(CreationContext context, ComponentModel model, DependencyModel dependency) in d:\60b7fa65294e7792\src\Castle.Windsor\MicroKernel\Resolvers\DefaultDependencyResolver.cs:line 270</StackTrace>
<Type>Castle.MicroKernel.Handlers.HandlerException</Type>
</InnerException>
<Message>Missing dependency.
Component SomeExampleFactory has a dependency on System.String, which could not be
resolved.
Make sure the dependency is correctly registered in the container as a service, or
provided as inline argument.</Message>
这个类看起来像:
public interface IDummyFactory
{
void DoSomething();
}
public class DummyFactory : IDummyFactory
{
private string someString;
public DummyFactory(string someConstructorArg)
{
someString = someConstructorArg;
}
}
使用以下 DI 设置:
var someString = "some constructor arg";
_container.Register(Component.For<IDummyFactory>()
.ImplementedBy<DummyFactory>()
.DependsOn(someString));
我假设它正在尝试进行某种类型的转换或格式化导致它爆炸,但由于类型本身是一个字符串,并且变量在字符串中传递......它甚至可能是一个如果它试图映射该变量的类型而不是变量内容,但我对 DI 框架和该领域的文档了解不够
【问题讨论】:
-
温莎城堡的哪个版本?
标签: .net dependency-injection castle-windsor