首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >类型化工厂默默地丢弃不能映射到构造函数的参数?

类型化工厂默默地丢弃不能映射到构造函数的参数?
EN

Stack Overflow用户
提问于 2012-07-16 14:48:09
回答 1查看 143关注 0票数 2

问题

如果创建函数中指定的参数不能映射到构造函数,那么类型化工厂是否应该抛出异常?例如。

代码语言:javascript
运行
复制
public class Foo
{
    public Foo() : Foo(new Guid())
    {
    }

    // Used to be 'public Foo(string bar)'
    public Foo(Guid guid)
    {
    }
}

public interface FooFactory
{
    Foo CreateFoo(string bar);
}

我们发现,错误的一部分是由一个类型化工厂悄悄调用默认构造函数引起的,而不是在Foo上找不到接受字符串的构造函数时抛出异常。Foo上的构造函数已经更改,但是在类型化工厂中创建它的方法没有更新。

偏解?

我们做了一些实验,找到了一个潜在的解决方案:

代码语言:javascript
运行
复制
public class OurComponentSelector : DefaultTypedFactoryComponentSelector
{
    public override IDictionary GetArguments(MethodInfo method, object[] arguments)
    {
        // Check an appropriate constructor can be found, throw exception if not
    }
}

这是一个合适的解决方案吗?

EN

回答 1

Stack Overflow用户

发布于 2012-07-16 23:34:26

是。这正是ITypedFactoryComponentSelector打算提供的扩展性类型。

温莎自己的DefaultDelegateComponentSelector在将参数传递给容器之前使用相同的扩展点来转换参数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11506789

复制
相关文章

相似问题

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