Регистрация класса с помощью ioc с помощью конструктора с параметром (конкретный класс без интерфейса) - PullRequest
0 голосов
/ 03 января 2019

Я посмотрел документацию по dryIoc и по какой-либо причине.

Я не могу найти способ зарегистрировать синглтон с помощью конструктора с параметром

У меня есть следующее

    public class MainActivity //no interface
    {
        //etc... omitted for brevity
    }


    public class SampleClass : ISampleClass
    {
        private readonly Activity mainActivity;

        public SampleClass(Activity mainActivity)
        {
            this.mainActivity = mainActivity;
        }
    }

    public interface ISampleClass
    {
        //etc... omitted for brevity
    }

// регистрация

// обычно, когда у меня есть конструктор без параметров, я делаю следующее:

 container.Register<ISampleClass,SampleClass>(Reuse.Singleton);

 container.Register<ISampleClass,SampleClass>(Reuse.Singleton);
 container.UseInstance(mainActivity);

вопрос Как зарегистрировать вышеупомянутое, когда SampleClass принимает параметр в качестве конструктора?

Я пытался следующим образом, но не компилируется

    container.Register<ISampleClass>(Made.Of(() => new SampleClass(mainActivity));
    container.Register<SampleClass>(made: Parameters.Of.Type<MainActivity>(Reuse.Singleton));

1 Ответ

0 голосов
/ 04 января 2019
container.RegisterDelegate<ISampleClass>(
    _ => new SampleClass(mainActivity),
    Reuse.Singleton);

или

container.Register<ISampleClass, SampleClass>(
    Reuse.Singleton,
    made: Parameters.Of.Type<Activity>(_ => mainActivity));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...