0

以下文档因多种原因无法正常工作:

https://jasperfx.github.io/lamar/documentation/ioc/resolving/requesting-a-concrete-type/

首先,文档说明您可以使用不正确的默认构造函数新建一个 Container。其次,以下内容对我不起作用。

var container = new Container(registry => { });
var testClass = container.GetInstance<TestClass>();

public class TestClass {}

这是来自的错误和堆栈跟踪

var testClass = container.GetInstance<TestClass>();

Lamar.IoC.LamarMissingRegistrationException:不存在或可以为 netcore.tests.web.UnitTests.ExtensionMethods.IServiceCollectionExtensionsTests.When_creating_a_new_instance_after_applying_the_AddTransientForAll_rule.TestClass 在 Lamar.IoC.Scope.GetInstance(Type serviceType) 在 Lamar.IoC.Scope.GetInstanceT 派生服务注册在 netcore.tests.web.UnitTests.ExtensionMethods.IServiceCollectionExtensionsTests.When_creating_a_new_instance_after_applying_the_AddTransientForAll_rule..ctor()

任何有关如何让具体类型自动解析的建议将不胜感激。

4

2 回答 2

0

根据源代码,自该文档以来,情况发生了变化。

尝试使用接受服务集合的构造函数

var services = new ServiceCollection();
var container = new Container(services);
var testClass = container.GetInstance<TestClass>();
于 2020-02-11T23:43:32.167 回答
0

我得到了这个工作,整晚都在烦我:

using Lamar;

namespace ConsoleApp2
{
    public class TestClass {}

    class Program
    {
        static void Main(string[] args)
        {
            var container = new Container(_ => { });

            var testClass = container.GetInstance<TestClass>();
        }
    }
}

这不起作用:

class Program
{
    static void Main(string[] args)
    {
        var container = new Container(_ => { });

        var testClass = container.GetInstance<TestClass>();
    }

    public class TestClass {}
}
于 2020-04-22T17:08:47.197 回答