首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >构造函数参数为字符串的Castle Windsor 3

构造函数参数为字符串的Castle Windsor 3
EN

Stack Overflow用户
提问于 2011-11-28 19:29:35
回答 1查看 9.2K关注 0票数 6

我以前从未使用过Windsor,但使用过其他依赖注入框架,目前我遇到了一个相当奇怪的问题。

我有一个工厂类,它在它的构造函数中接受一个字符串,但是每当我尝试解析那个对象时,我都会得到一个异常,说:

代码语言:javascript
运行
复制
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>

这个类看起来像这样:

代码语言:javascript
运行
复制
public interface IDummyFactory
{
    void DoSomething();
}

public class DummyFactory : IDummyFactory
{
    private string someString;

    public DummyFactory(string someConstructorArg)
    {
        someString = someConstructorArg;
    }
}

DI设置如下:

代码语言:javascript
运行
复制
var someString = "some constructor arg";
_container.Register(Component.For<IDummyFactory>()
                             .ImplementedBy<DummyFactory>()
                             .DependsOn(someString));

我假设它正在尝试进行某种类型的转换或格式化,这会导致它崩溃,但由于类型本身是一个字符串,而变量是在字符串中传递的……它甚至可能试图映射该变量的类型,而不是变量内容,但我对DI框架和这方面的文档了解不够

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-28 19:35:35

尝试调用DependsOn的重载,它采用键/值对的IDictionary来指定依赖关系:

代码语言:javascript
运行
复制
_container.Register(
    Component.For<IDummyFactory>()
        .ImplementedBy<DummyFactory>()
        .DependsOn(new Hashtable 
        { 
            { "someConstructorArg", "some constructor arg" }
        }));
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8295167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档