gpt4 book ai didi

c# - 使用 StructureMap 的简单工厂

转载 作者:行者123 更新时间:2023-11-30 22:49:17 26 4
gpt4 key购买 nike

也在结构图组上发布了这个。我们上周才开始使用 structuremap,并且真的在挖掘它。


我确信我遗漏了一些简单的东西。

我正在尝试在我的工厂内使用 SM 模仿以下代码。我同意在工厂类中具有容器依赖性。这该线程中的共识似乎是这是正确的方法:http://www.codeplex.com/unity/Thread/View.aspx?ThreadId=29697 .如果有更好的方法,我愿意听取其他方法完成这个。

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

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;
}
}

我链接到文档的正确部分很好,你不需要为我编写代码(尽管我不会提示 :))。我想知道工厂是什么样子的,还有注册表代码。

最佳答案

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

另一种方法(我已成功使用)是创建一个字典,其中的字典充当类型映射。在那里查找类型,然后通过 ObjectFactory 获取该类型的实例。

关于c# - 使用 StructureMap 的简单工厂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1233524/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com