Ответ 1
Рабочий процесс не использует контейнер IOC. Он использует шаблон ServiceLocator, в котором вы добавляете зависимости к рабочему циклу рабочего процесса как расширения и действия рабочего процесса и извлекаете эти службы из расширений рабочего процесса через контекст.
Шаблоны ServiceLocator и IOC аналогичны и имеют одинаковую цель в зависимости от развязки. Атрибут apporach отличается, хотя в контейнерах IOC-контейнера используются зависимости, в то время как ServiceLocator используется для вытягивания зависимостей.
Пример активности:
public class MyBookmarkedActivity : NativeActivity
{
protected override void CacheMetadata(NativeActivityMetadata metadata)
{
base.CacheMetadata(metadata);
metadata.AddDefaultExtensionProvider<MyExtension>(() => new MyExtension());
}
protected override void Execute(NativeActivityContext context)
{
var extension = context.GetExtension<MyExtension>();
extension.DoSomething();
}
}
Класс MyExtension является расширением здесь и не имеет базового класса или требований к интерфейсу.