也在结构图组上发布了这个。我们上周刚刚开始使用结构图,并且正在挖掘它。
我确定我错过了一些简单的事情。
我正在尝试模仿以下代码,在我的工厂中使用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;
}
}
我链接到文档的右边部分很好,你不需要 为我写代码(虽然我不会抱怨:))。我想 知道工厂的样子,以及注册码。
答案 0 :(得分:3)
我从未尝试过这种方式,但您可以使用.WithName()方法提供实例名称,然后可能通过ObjectFactory.GetNamedInstance()获取实例。
另一种方法(我已成功使用)将创建一个字典,其中充当字体映射。在那里查找类型,然后通过ObjectFactory获取该类型的实例。
答案 1 :(得分:0)
至于注册,我想你会想要使用Conditional Object Construction。