Итак, у вас есть класс:
public class Consumer
{
public Consumer(Provider provider)
{
// ...
}
}
И этот класс имеет следующую зависимость:
public class Provider : BaseProvider
{
public Provider()
: base()
{
// ...
}
}
И эта зависимость имеет базовый класс:
public class BaseProvider
{
public BaseProvider()
{
// ...
}
}
А теперь в конструкторе BaseProvider
вы хотите знать, для какого вызывающего абонента он инициализируется?
Вы не можете.
Каркас внедрения зависимостей будет инициализировать Provider
service до создания класса Consumer
. Таким образом, вы не сможете получить эту информацию, особенно не из трассировки стека.
Это проблема XY. Если вам нужно знать , кто вызывает класс, вы делаете что-то не так. То, что вы могли бы искать, - это параметризованный конструктор в Provider
, который вызывается с различными параметрами в зависимости от того, кому он нужен, чтобы изменить его поведение. Но это совсем другой вопрос.
Для последнего см., Например, .NET Core DI, способы передачи параметров в конструктор .