С# Как инициализировать службу, введенную через конструкторC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 С# Как инициализировать службу, введенную через конструктор

Сообщение Anonymous »

Когда я использую внедрение зависимостей, я пытаюсь понять, как бы я:
  • создал экземпляр внедренного, вызвав определенный конструктор?
  • Что, если мне нужно инициализировать эти два отдельных экземпляра с помощью двух разных конструкторов?
  • Можно ли вообще создать экземпляр внедренного класса вне конструктора класса приложения? >
Я не уверен, что это вообще правильное использование DI, но я просто хочу понять, не упускаю ли я что-то. Рассмотрим этот пример ниже. В комментариях я отметил вопросы, для наглядности. Если у вас есть предложения о том, как добиться чего-либо из этого наиболее подходящим способом, я буду признателен за понимание.
Предположим, мой сервис определен следующим образом:
public interface IMyClass
{
void DoStuff();
}

public class MyClass: IMyClass
{
public MyClass(MyType1 t1){//do somethign with t1 in conctructor}
public MyClass(MyType2 t2){//do somethign with t2 in conctructor}
public void DoStuff(){...}
}

Я могу использовать его в своем приложении следующим образом:
public class MyProgram
{
private IMyClass _myClass1;
ptivate IMyClass _myClass2;

public MyProgram(IMyClass myClass)
{
MyType1 type1 = GetMyType1();
MyType2 type2 = GetMyType2();
_myClass1 = myClass; //Question 1. I am looking for a way to initialize _MyClass with type1
_myClass2 = myClass; //Question 2. I am looking for a way to initialize _MyClass with type2
}

public void MyMethod1()
{
//Question 3. can _myClass1 be instantiated here with type1?
_myClass1.DoStuff();
}

public void MyMethod2()
{
//Question 3. can _myClass2 be instantiated here with type2?
_myClass2.DoStuff();
}
}


Подробнее здесь: https://stackoverflow.com/questions/784 ... onstructor
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»