【问题标题】:StructureMap Exception Code 205 Missing requested Instance propertyStructureMap 异常代码 205 缺少请求的实例属性
【发布时间】:2010-02-11 23:26:52
【问题描述】:

我正在试用最新版本的 StructureMap,以了解 IoC 容器等。作为我的第一个测试,我有以下课程:

public class Hospital
    {
        private Person Person { get; set; }
        private int Level { get; set; }

        public Hospital(Person employee, int level)
        {
            Person = employee;
            Level = level;
        }

        public void ShowId()
        {
            Console.WriteLine(this.Level);
            this.Person.Identify();
        }
    }

然后我像这样使用 StructureMap:

static void Main()
        {
            ObjectFactory.Configure(x =>
                                        {
                                            x.For<Person>().Use<Doctor>();
                                            x.ForConcreteType<Hospital>().Configure.Ctor<int>().Equals(23);
                                        });

            var h = ObjectFactory.GetInstance<Hospital>();

            h.ShowId();
        } 

所以我将 Doctor 对象作为第一个构造函数参数传递给 Hospital,我试图将 level 参数设置为 23。当我运行上面的代码时,我得到:

未处理的异常: StructureMap.StructureMapException: StructureMap 异常代码:205 缺少请求的实例属性 InstanceKey 的“级别” “5f8c4b74-a398-43f7- 91d5-cfefcdf120cf"

所以看起来我根本没有设置 level 参数。有人能指出我正确的方向吗?如何在构造函数中设置 level 参数?

干杯。 贾斯。

【问题讨论】:

    标签: structuremap


    【解决方案1】:

    你们很亲密。您不小心在依赖表达式上使用了 System.Object.Equals 方法,而不是 Is 方法。我还建议在配置常见类型(如字符串或值类型(int、DateTime))时指定构造函数参数名称以避免歧义。

    这是我对你正在寻找的东西的测试:

        [TestFixture]
    public class configuring_concrete_types
    {
        [Test]
        public void should_set_the_configured_ctor_value_type()
        {
            const int level = 23;
            var container = new Container(x =>
            {
                x.For<Person>().Use<Doctor>();
                x.ForConcreteType<Hospital>().Configure.Ctor<int>("level").Is(level);
            });
    
            var hospital = container.GetInstance<Hospital>();
    
            hospital.Level.ShouldEqual(level);
        }
    }
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-05
    • 1970-01-01
    • 1970-01-01
    • 2020-10-12
    • 2020-10-07
    相关资源
    最近更新 更多