在结构图组上也发布了这篇文章。我们上周才开始使用结构图,而且还在深入挖掘。
我肯定我错过了一些简单的东西。
我试图在工厂内使用SM模拟以下代码。我可以接受工厂类中的容器依赖关系。这个线程中的共识似乎是,这是正确的方法:http://www.codeplex.com/unity/Thread/View.aspx?ThreadId=29697。如果有更好的方法,我愿意听到其他方法来完成这个任务。
基本上,我的工厂的Create方法将接受一个枚举值(它可能是一个实际的类型,但无论哪种方式,它都不是由容器控制的东西),并且应该返回正确的实例。请注意,返回类型将由SM管理。我不想把所有的时间都放在厂长身上,因为可能会有很多(!)。
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;
}
} 我可以链接到文档的正确部分,您不需要为我编写代码(虽然我不会抱怨:)。我想知道工厂是什么样子,也想知道注册代码。
发布于 2009-08-05 14:35:08
我从未尝试过这种方法,但是您可以使用.WithName()方法提供实例名,然后可能通过ObjectFactory.GetNamedInstance()获取实例。
另一种方法(我已经成功地使用了)是创建一个字典,作为一个排版。在那里查找该类型,然后通过ObjectFactory获取该类型的实例。
发布于 2009-08-05 16:02:37
至于注册,我想你会想要使用条件对象构造。
https://stackoverflow.com/questions/1233524
复制相似问题