2

我有一些类型,例如ParentClassAand 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

请建议。谢谢。

4

0 回答 0