首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用StructureMap的简单工厂

使用StructureMap的简单工厂
EN

Stack Overflow用户
提问于 2009-08-05 14:12:57
回答 2查看 2.1K关注 0票数 2

在结构图组上也发布了这篇文章。我们上周才开始使用结构图,而且还在深入挖掘。

我肯定我错过了一些简单的东西。

我试图在工厂内使用SM模拟以下代码。我可以接受工厂类中的容器依赖关系。这个线程中的共识似乎是,这是正确的方法:http://www.codeplex.com/unity/Thread/View.aspx?ThreadId=29697。如果有更好的方法,我愿意听到其他方法来完成这个任务。

基本上,我的工厂的Create方法将接受一个枚举值(它可能是一个实际的类型,但无论哪种方式,它都不是由容器控制的东西),并且应该返回正确的实例。请注意,返回类型将由SM管理。我不想把所有的时间都放在厂长身上,因为可能会有很多(!)。

代码语言:javascript
复制
public class PreSaveActionFactory : IPreSaveActionFactory 
{ 
    public IPreSaveAction Create(MyEnumType enumType) 
    { 
        IPreSaveAction action; 

        switch (enumType) 
        { 
            case MyEnumType.Value1: 
                //imagine this has 3 Ctor arguments 
                action = new Value1PreSaveAction(); 
                break; 
            case MyEnumType.Value2: 
                //and imagine this has 4 completely different Ctor arguments 
                action = new Value2PreSaveAction(); 
                break; 
            default: 
                throw new NotSupportedException(); 
        } 

        return action; 
    } 
} 

我可以链接到文档的正确部分,您不需要为我编写代码(虽然我不会抱怨:)。我想知道工厂是什么样子,也想知道注册代码。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-08-05 14:35:08

我从未尝试过这种方法,但是您可以使用.WithName()方法提供实例名,然后可能通过ObjectFactory.GetNamedInstance()获取实例。

另一种方法(我已经成功地使用了)是创建一个字典,作为一个排版。在那里查找该类型,然后通过ObjectFactory获取该类型的实例。

票数 3
EN

Stack Overflow用户

发布于 2009-08-05 16:02:37

至于注册,我想你会想要使用条件对象构造

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

https://stackoverflow.com/questions/1233524

复制
相关文章

相似问题

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