Как я могу автоматически разрешать конкретные типы в Lamar? - PullRequest
0 голосов
/ 12 февраля 2020

Следующая документация не работает по нескольким причинам:

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

Сначала в документации говорится, что вы можете создать контейнер с конструктором по умолчанию, который это не правда. Во-вторых, следующее не работает для меня.

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

public class TestClass {}

Вот ошибка и трассировка стека от

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

Lamar.Io C .LamarMissingRegistrationException: Нет регистрации службы или не может быть получено для netcore.tests.web.UnitTests.ExtensionMethods.IServiceCollectionExtensionsTests.When_creating_a_new_instance_after_applying_the_AddTransientForAll_rule.TestClass в Lamar.Io C. UnitTests.ExtensionMethods.IServiceCollectionExtensionsTests.When_creating_a_new_instance_after_applying_the_AddTransientForAll_rule..ctor ()

Любые предложения о том, как получить конкретные типы для автоматического разрешения, будут приняты с благодарностью.

Ответы [ 2 ]

0 голосов
/ 22 апреля 2020

Я получил это на работу, меня весь вечер мучили:

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 {}
}
0 голосов
/ 12 февраля 2020

Исходя из исходного кода , после этой документации все изменилось.

Попробуйте использовать конструктор, который принимает коллекцию сервисов

var services = new ServiceCollection();
var container = new Container(services);
var testClass = container.GetInstance<TestClass>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...