我有一些类型,例如ParentClassA
and ParentClassB
,它们的构造函数具有参数,IEumerable<IType>,
如下面的代码所示。
public interface IType
{ }
public class TypeA : IType
{ }
public class TypeB : IType
{ }
public class ParentClassA
{
public ParentClassA(IEnumerable<IType> obj)
{
var d = obj;
}
}
public class ParentClassB
{
public ParentClassB(IEnumerable<IType> obj)
{
var d = obj;
}
}
现在在 Structuremap 注册表中,(Structuremap dll 的版本是 3.1.5.0)我想根据上下文设置枚举,这意味着基于正在创建的父对象,例如,
For<IEnumerable<IType>>().Use(x => ff(x)).AlwaysUnique();
public IEnumerable<IType> ff(StructureMap.IContext x)
{
if (x.RootType.Name.Equals(typeof(ParentClassA).Name))
return new List<IType>{ new TypeA() };
else return new List<IType> { new TypeA() };
}
但是当我运行应用程序时(它构建得很好),在 ParentClassA 等的构造函数中,我只能看到一个空列表被传递,但我期待的是 function 的返回列表ff
。
请建议。谢谢。